From 62ac88b5b84e1031ebda6432ca9c8b786ffbf96e Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 16 Sep 2025 11:21:48 +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 325084 -> 325104 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 .../brief/dev-doc/build-hinc/index.html | 3 +- .../hinc-web-service/disp-web-service.html | 165 ++++++++++++++++++ .../HiAPI-docsite/brief/dev-doc/toc.html | 10 ++ .../HiAPI-docsite/brief/dev-doc/toc.json | 2 +- .../zh-Hant/script/Doc-Task/index.html | 25 +-- .../zh-Hant/script/Mapping/index.html | 2 +- .../zh-Hant/script/MillingTraining/index.html | 4 +- .../zh-Hant/script/NcOptimization/index.html | 4 +- .../script/PlayCsvFile/play-csv-file.html | 149 ++++++++++++++++ .../{RunNcFile => PlayNcFile}/index.html | 6 +- .../zh-Hant/script/RuntimeGeom/index.html | 2 +- .../brief/user-guide/zh-Hant/toc.html | 5 +- .../brief/user-guide/zh-Hant/toc.json | 2 +- App/wwwroot/HiAPI-docsite/index.json | 32 ++-- App/wwwroot/HiAPI-docsite/manifest.json | 28 ++- App/wwwroot/HiAPI-docsite/temp-Doc/toc.json | 2 +- 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 34 files changed, 459 insertions(+), 116 deletions(-) create mode 100644 App/wwwroot/HiAPI-docsite/brief/dev-doc/hinc-web-service/disp-web-service.html create mode 100644 App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/PlayCsvFile/play-csv-file.html rename App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/{RunNcFile => PlayNcFile}/index.html (95%) diff --git a/App/Hi.Wpf.dll b/App/Hi.Wpf.dll index 9623de254d468a90d13dba986f93e97c12a852e4..66b03b012c5ace9d97b1779596b2b0e21bea3a29 100644 GIT binary patch delta 312 zcmZpe!qPB>WkLswf9j0u8+#-q8I>n5m9%8kn0#L{nNel4vy`E*fI!DRN4KWgek*3W zSaWlGnnS(CpQ1ql3^vZ(mR-8|p*{b8Z9kuv0O$^7WK#nVc9BwVBW4$~jJD21W*E1_lP@?XQ^_=QA>zZtrGc z3}*~BWzc3wVlZJyWUyo~U@&4x1>!UyOk^-+uwXC;!X$=d21B5D3WG6F&J4)11d5~q iWlVsyIZz!)CIu*C1T?{dA$7Vb8>1=Ef^0U%smuUwV_C5P delta 312 zcmZpe!qPB>WkLtb^8@aU8+#-q8I>k4m9%73pL}03nNfMOvy`E*K+&F+ON|eG^j@YU z+tBN0`D1g7E;FlziJk!ig9#&pzOkO6p0SB`T54K~siCp4iK&HwvAMa0iGf+Fxfzge zkd$VTmS$>dX=Z9-Vv;<0zmXvei<95H$zO~D1fEBHz28-P+;gGSb2FnQ!rYTXj2#r9 zf;$zVf*{r5Mj_5ePIcdkT_QeZa$-o-WrFaWa5fzSfTH()RWsxb$W5P1WJB%lrpAWj3S bHD#~_%9sMxfnf4>*wD6 z?JZxsGI1TYlnkT}wDTEIQhVN2+j$jyp7oF89e&n7h6R4hpT-7%>UZ!AKi||wuF91P z`}ty1n=oPVa0XhL592CaE-+1nQ}8XP!W{233z*{D&C_^W|=PV55pShLpcOk z5$WWKGIkGsjOE}y{F44q^cH?=_(*ix>0w0CTPCA;Q+!?B-iJm0qC1H?f8V``MKSs8 z1oEZlYkJKyi4-%KGc#*2LWtpzS;wHZM?L1SIwQ6?wEm@_mu*(}s=+!UUe(Pw%i)6a=m}#|B4I!ljA#==3XnKe=cl({As;8dN40G`wy}%GfO4_Lzt!| zQex&*Oq0m0gia96hm;V@qH#!A5LrnSTUJ~S!z6U0$Pr7Q^nSVs2nqlcH^fWa8d4aT z8#e?tuptSiAO;EvM3O5If&+o%c}WzAlqE%FCzQ+vnKfv~gCvHsOhS1H!IirRoK@`= O(viK_B`|sLx%&@0b&~1; delta 548 zcma)2&1(}u6o0QtwWz*T2-I*N~Bn^pzh^HJi*|r;650xTb^pb-Z z4>^c~l=^WJ38{*Pp+=G5MLbxLT=Z-a6}0F{&rbh?^7uX8@8iA0YwlXjUF-I(B)gvZ z-D_XEICTdGi8Le+wI6hRW1V;HElTo53^cYHbd$smHYruBvl&d#r7? zEI6*#>h@F>){dm1nf^Rs!G)Y}TM)zdtOb`0aAAfE)Vj`u0K0tLNQm%&AY^^O)Du znvRQxhLwzFU6K`Br-PZ1vx-xBdtHYIrvznJf?hA7PFa zyaJQ6G7>?|d`Wr47dfYa7sk<&44H`Ig_uO1M;d}ksc(L9hN(OtBmf}a*Dr7|l3*bF zS2R|!Y9^R9h(JJKzRbWki~=_bheZQ!SO6Y`#*JXfxS>f2!(v!4AV&2}5oj2d8egv4 PTgb-tP8WcvXs7!hwM&!k diff --git a/App/HiDisp.dll b/App/HiDisp.dll index 409e1ab55eca3314c9e8f63ffb72b726a0b79384..1d19cd82976992ea372c2c1829c039e497360188 100644 GIT binary patch delta 12956 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 W>EqCLBE3{L1FT=>Gr^U{+E9 delta 12956 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 diff --git a/App/HiGeom.dll b/App/HiGeom.dll index f9964acee421cd15e7e184aa7c85281ae354d095..e6d686b28277857d9fa0d38c4a561588c10e572b 100644 GIT binary patch delta 8072 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 Af&c&j delta 8072 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 F{|7@;Ltp>^ diff --git a/App/HiLicense.dll b/App/HiLicense.dll index 046e7d52df84949db712bd20d6ed54f24a370019..e9e46a3a2ed2a92e1d1c800edd11a079a4206dd4 100644 GIT binary patch delta 315 zcmZqp!_x4FWkLtb54r3K8+(puF)B?C)b34hxocrMP)5Nr73m{=> zX`XDHlALI1G}$`6kY%@lvOtEL0#xuDOc1C# z=F?t=dnOl?WZxPG$82Y`VVuFZnJ;V3IZj0eMh0dE1_s6Ln=Kf_85xbYb6YVcGX@(o zXfvcSBr_NSu@QqQkTzqm1VR&rBnAVZj3q-NgE^3A48|!y6^UT=7El&QtvOJyF+&QF bOa$_brXRFsG-Wkr&|@$Fx!^zJL<2Se#2Z>l diff --git a/App/HiMech.dll b/App/HiMech.dll index 091d1d3383dc11e5d7201dc3cc6aa876019775c1..9967c6ae436d77b5dfe3e4139a6150905f218b89 100644 GIT binary patch delta 9009 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 delta 9009 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 diff --git a/App/HiNC-2025-win-desktop.deps.json b/App/HiNC-2025-win-desktop.deps.json index 3265b22..a8838a7 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.34", - "HiNc": "3.1.51", + "Hi.Wpf": "3.1.35", + "HiNc": "3.1.52", "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.34": { + "Hi.Wpf/3.1.35": { "dependencies": { - "HiDisp": "3.1.39" + "HiDisp": "3.1.40" }, "runtime": { "lib/net9.0-windows7.0/Hi.Wpf.dll": { - "assemblyVersion": "3.1.34.0", - "fileVersion": "3.1.34.0" + "assemblyVersion": "3.1.35.0", + "fileVersion": "3.1.35.0" } } }, - "HiCbtr/3.1.39": { + "HiCbtr/3.1.40": { "dependencies": { - "HiDisp": "3.1.39" + "HiDisp": "3.1.40" }, "runtime": { "lib/net9.0/HiCbtr.dll": { - "assemblyVersion": "3.1.39.0", - "fileVersion": "3.1.39.0" + "assemblyVersion": "3.1.40.0", + "fileVersion": "3.1.40.0" } } }, - "HiDisp/3.1.39": { + "HiDisp/3.1.40": { "dependencies": { - "HiGeom": "3.1.35", + "HiGeom": "3.1.36", "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.39.0", - "fileVersion": "3.1.39.0" + "assemblyVersion": "3.1.40.0", + "fileVersion": "3.1.40.0" } }, "native": { @@ -1706,7 +1706,7 @@ } } }, - "HiGeom/3.1.35": { + "HiGeom/3.1.36": { "dependencies": { "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", @@ -1717,8 +1717,8 @@ }, "runtime": { "lib/net9.0/HiGeom.dll": { - "assemblyVersion": "3.1.35.0", - "fileVersion": "3.1.35.0" + "assemblyVersion": "3.1.36.0", + "fileVersion": "3.1.36.0" } }, "resources": { @@ -1730,27 +1730,27 @@ } } }, - "HiLicense/3.1.33": { + "HiLicense/3.1.34": { "dependencies": { - "HiGeom": "3.1.35" + "HiGeom": "3.1.36" }, "runtime": { "lib/net9.0/HiLicense.dll": { - "assemblyVersion": "3.1.33.0", - "fileVersion": "3.1.33.0" + "assemblyVersion": "3.1.34.0", + "fileVersion": "3.1.34.0" } } }, - "HiMech/3.1.43": { + "HiMech/3.1.44": { "dependencies": { "CommandLineParser": "2.9.1", - "HiCbtr": "3.1.39", + "HiCbtr": "3.1.40", "Microsoft.CodeAnalysis.CSharp.Scripting": "4.14.0" }, "runtime": { "lib/net9.0/HiMech.dll": { - "assemblyVersion": "3.1.43.0", - "fileVersion": "3.1.43.0" + "assemblyVersion": "3.1.44.0", + "fileVersion": "3.1.44.0" } }, "resources": { @@ -1765,20 +1765,20 @@ } } }, - "HiNc/3.1.51": { + "HiNc/3.1.52": { "dependencies": { "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", "Grpc.Net.Client": "2.66.0", - "HiLicense": "3.1.33", - "HiMech": "3.1.43", - "HiUniNc": "3.1.40", + "HiLicense": "3.1.34", + "HiMech": "3.1.44", + "HiUniNc": "3.1.41", "System.IO.Pipelines": "9.0.9" }, "runtime": { "lib/net9.0/HiNc.dll": { - "assemblyVersion": "3.1.51.0", - "fileVersion": "3.1.51.0" + "assemblyVersion": "3.1.52.0", + "fileVersion": "3.1.52.0" } }, "resources": { @@ -1790,14 +1790,14 @@ } } }, - "HiUniNc/3.1.40": { + "HiUniNc/3.1.41": { "dependencies": { - "HiMech": "3.1.43" + "HiMech": "3.1.44" }, "runtime": { "lib/net9.0/HiUniNc.dll": { - "assemblyVersion": "3.1.40.0", - "fileVersion": "3.1.40.0" + "assemblyVersion": "3.1.41.0", + "fileVersion": "3.1.41.0" } } }, @@ -2442,61 +2442,61 @@ "path": "grpc.tools/2.66.0", "hashPath": "grpc.tools.2.66.0.nupkg.sha512" }, - "Hi.Wpf/3.1.34": { + "Hi.Wpf/3.1.35": { "type": "package", "serviceable": true, - "sha512": "sha512-xYj7sQoFAWJOlnu8jMNMo33Fu0PL/wIyUD8WOZWRv65k3uhfKId+fvlod/bblp6sEJGbPpjvoTYqjSICIWCf2Q==", - "path": "hi.wpf/3.1.34", - "hashPath": "hi.wpf.3.1.34.nupkg.sha512" + "sha512": "sha512-rIIVxy2l5QTy2WwrQ2D0e4Hz4O1WeCOJbSjDpfpLjhjTPCnFz+C77pSay//OHNiYOJXW7nczRQ3cksU4subadg==", + "path": "hi.wpf/3.1.35", + "hashPath": "hi.wpf.3.1.35.nupkg.sha512" }, - "HiCbtr/3.1.39": { + "HiCbtr/3.1.40": { "type": "package", "serviceable": true, - "sha512": "sha512-4UFiWpjbDLzE+6ph9rZ5u9ntvxRmbkwxlqBHDbdbDggLpdTizvsCqsehWcw1l9/U/DS7T8r5zHoBbkgLbAXX1g==", - "path": "hicbtr/3.1.39", - "hashPath": "hicbtr.3.1.39.nupkg.sha512" + "sha512": "sha512-+DgpnExTGyfhPEEWGfszmX1zuS6xEbam5mcTr4EXvjMThbwJq11AGIkxb3zWLARkZgX6hvLIC/3ugS0Hd8oHdA==", + "path": "hicbtr/3.1.40", + "hashPath": "hicbtr.3.1.40.nupkg.sha512" }, - "HiDisp/3.1.39": { + "HiDisp/3.1.40": { "type": "package", "serviceable": true, - "sha512": "sha512-z9p0msRH8f3OfV/vK4vRhtfPafCDRXhXgiqQwEbskZRg+hjIiXU4xqwTy5M8LwSHk9ht1d6J9HdTwtUjjR3Z+A==", - "path": "hidisp/3.1.39", - "hashPath": "hidisp.3.1.39.nupkg.sha512" + "sha512": "sha512-Apg9uBX4QG5Rm+3gzrCq0W4koQ5kalKyXSF9XcrndOcd4yyWD4NHHbcHYoFNpqtfri6c5qwPoGgqpHCvHZri6A==", + "path": "hidisp/3.1.40", + "hashPath": "hidisp.3.1.40.nupkg.sha512" }, - "HiGeom/3.1.35": { + "HiGeom/3.1.36": { "type": "package", "serviceable": true, - "sha512": "sha512-aBkdVedhLK5CkilKPdNIIch44/1+kR8w7LaG8JU4iJc9fAV4yHxd5KriAekzmWe+3ujmkmM8kUCKC0Y71ij+fw==", - "path": "higeom/3.1.35", - "hashPath": "higeom.3.1.35.nupkg.sha512" + "sha512": "sha512-HJpmSjmBM9KjaJHZZuIQL0SfmTVNZ4SuGtWS+GQN5nhB9fuWTpdJL3ZzyJ00JS7rSKM/5wX83NSVaM6usNgpLg==", + "path": "higeom/3.1.36", + "hashPath": "higeom.3.1.36.nupkg.sha512" }, - "HiLicense/3.1.33": { + "HiLicense/3.1.34": { "type": "package", "serviceable": true, - "sha512": "sha512-S0XY8RhQOKQkX3Abfr8jkcjqoLguiFXzwA3QTY+HgYtkWLzC/IaxHzTrlLT1HijrCzHyb3qcR+SNEwRqH8mBTQ==", - "path": "hilicense/3.1.33", - "hashPath": "hilicense.3.1.33.nupkg.sha512" + "sha512": "sha512-h4eGvv+4lS71gB1Df3GqB8PFykLwrR5NsvoWQRUK6mLeIHZ8vlnNeYBx/pF/x0poVzz1x7NHb8W9YbPjKyNXww==", + "path": "hilicense/3.1.34", + "hashPath": "hilicense.3.1.34.nupkg.sha512" }, - "HiMech/3.1.43": { + "HiMech/3.1.44": { "type": "package", "serviceable": true, - "sha512": "sha512-vQBXD4UkoPoduUnz4D9v+gEb4FuZZ9W5kgKE3+WeF8q7FHDLYue67x7EX9tm5t767Z8yH9sX6ESd3ve9tX8GIA==", - "path": "himech/3.1.43", - "hashPath": "himech.3.1.43.nupkg.sha512" + "sha512": "sha512-5GnZit75i0SUCQvl59z9Rjrno4xLRBGrNc3Hjfp5CjB8tAcZTTVh7wGR7rH97D04hFOK2IvjgDyphdHxzXSxaQ==", + "path": "himech/3.1.44", + "hashPath": "himech.3.1.44.nupkg.sha512" }, - "HiNc/3.1.51": { + "HiNc/3.1.52": { "type": "package", "serviceable": true, - "sha512": "sha512-G9jo2iHczdwCIPydYHt2NGQCBF+0i1DaX8Gcsrmx3AaijlhbP7+SkzMmOTgSDqHmmoxuDaYY18NOE8TVXQ7dIw==", - "path": "hinc/3.1.51", - "hashPath": "hinc.3.1.51.nupkg.sha512" + "sha512": "sha512-YTpLUteJb1+0lQ67awGUVGTP552Dw4uOJdLIOsqThlrfF0Wwh352+z4WNTeX5qqTiIMCFE9croY5NfDZGiiAow==", + "path": "hinc/3.1.52", + "hashPath": "hinc.3.1.52.nupkg.sha512" }, - "HiUniNc/3.1.40": { + "HiUniNc/3.1.41": { "type": "package", "serviceable": true, - "sha512": "sha512-o7xlqbvWdfgjiZKcyZcE+AMBCSxOQA80T5ws/U2dw5kOZ4tjkEYEwSsFF655fA+LTykVm+z70lpBUgXARvPYIA==", - "path": "hiuninc/3.1.40", - "hashPath": "hiuninc.3.1.40.nupkg.sha512" + "sha512": "sha512-GRmkhPqz1nSkMOoadN8agzKG6nY3U8u84AxiU4ZmPp1hx06pkyS7jf+RX+q4y1ANbFJ8eo+iywfLFtg1DbaT8Q==", + "path": "hiuninc/3.1.41", + "hashPath": "hiuninc.3.1.41.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 f0d83ffacb7709c9b26e820db23c4f5adc17151d..6490ef8ab2ffcafecbf91c0e3a631f8a49429326 100644 GIT binary patch delta 7983 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 GPW%_WiRK~z delta 7933 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 delta 35820 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 CCqc^q diff --git a/App/HiNc.dll b/App/HiNc.dll index e5006859eb6f3840c6d9c3381c60c191f91444b2..759c5dabfcc0e98387aff123b3a23f4c91f1424a 100644 GIT binary patch delta 614 zcma)(OK1~O6o${acg94t#GoN)BO*;TeM~xYbLSBdB#&v0t!UjzK_QumLcv{q(S$^? zh^At3G1QIdMo<(*%0(0^xN?yqSTGw~#ia|Y=)$hND(>ZQ9{+b9o6}g1HI`#Ht|+U` zbF0nP}Q0lN+IjLLDXA^PT3ze1vvy3a=Y9)E>%iAtJC*g!Sfb< zlFS=6W5cGQ*^ZOfc+uvXW9hnP6$*@HGt6bCEhcB_yX#3SZx?jKGBlSLxyD_ysO2n{ z)10E4{e8w|1uLi~l->U~`5>W;Zy8=c-njQ+{ov#Fh0t{A;%BjWr!sTKW@#OOBMfEI zM%rWpmT%}ho5?ty?^#uDI=WNN_{=Y7D+Vj;J~td@*cI{mrtGD6o2pgW?I8!lUgL(kZ^4+nRULIZ+3P-sF`)F$T0IH9%6TPrYP~I5w(kp zB~fc65rbWVjzt|R`3M3#MBu>)lnz0GcErjpGe&!OHF^&K6;|@Pu;jr z>N{~lgiGY-VcZm_5_Bbjo3WOpZF2ZYdOWeIw03@{kyuF5-OWu@-d!LmRXlH}Ul51I z!!+$Uf`{Uj3jOhS^onmG9c)80K3Jt)*cpdadL4V>uT`4G?s!*?p2uuFUz02=p4I64 zmW;)@Rd9VnvjGupXj?&8B|4TkdE5qA6Hmr*?Q-gz#+TV?=f3ly7ZF`j2DVybV z0FKaW=2*^RJ)E(U6Bt2|k0MscS4t%_h{~a%hgQBEGCQzzUNN{>zNM_c*=hm;l`k;G zlZrZn$b=oK$8eZI4{%_zO5i{MhU@_H5XoXtkXuDMB`~ELK^a1s&?Q>Z`OO&E(y^q* XWzqm1ubx(Il|c@4(RxPxj0E5p+~=lP diff --git a/App/HiUniNc.dll b/App/HiUniNc.dll index 5930105eb311d7d6b4e75d79a7f3911135509c42..9c9bde6b5dded9006e8406d06fc4837a856733bd 100644 GIT binary patch delta 811 zcma)%Ur1A77{=fCeB0D%Ofm}v6?J9H&fM9)oj)X%+u34y87;9g)^;W#l|?rpiy5Us z76!t1kr)^S(jU>%k07JFpo@}_F7zUz=uXg!C`qXA9O}OB;`hAIb6%dqTU_%N*Sw=Q zTyHxc&JK>ujo>)qX&#Vp7%Rufo(2O3;0+)Gd?EZbL7m_n+wfpUy5!;~O7ON+J3|s> z9?#Cw222-sk*>0Ial+v$VJ8ZzlSw{&9b=k5p{U_RNTsr#h{t5A z>K(G7YjHWOM)kO&tI$dzX$@*LBUxhSh9N<(r@J>0((x+)Bjl z0sd@O`hlqMN6)2Wctn9#2!jS0h&YS_g*@cI01L8$6m+2(uyadj9ztT$gjx=D@m+Iv a!=Q@I9H{K*ycBgS5QGrFGcTP-3E&R{_}47} delta 810 zcma)%Pe>F|9LL{xW>(kLSkW|GP%+nBlUZly&(7|pbaq!+Iz}e_A!c`Hqk|+}Wpm9^ zBa4lqcL_S!MWR1c`VbNV2`@n&#DhW*L7f7n!bG9oEOqZ4KHvBK%zMA#6}NoFEnjI` zdQsBekI&4{;2|)@x&%z2c2PXq8YiP;Bt)a`tY=VS)AmhPICEyxLl`;)#&1b-Llc-a<#?fO8F=sykCu8KFf6p!Q~iD z*I*1+)2my0B^wHmAmxX0%F_${DB=ju?v1J+rO6YzIP_u(Oj+6Z5h-UJ;# zh`qA(le59UlHF=RpTBGuh=1sx-3;PV040_>j^`de|7Q{xCD`t=M&mNS z9hX%-rD%#~8cDsMetUzq|2wHJ;aKhC;g2-=uFaa30zbOGXtS)igk&(LgcU+`kRB}@ z3F}I?oz3L4x?|W*CT~PCs-ZfXsb+0EW9A&w&c#e8Z`x6t?SI0v)v6GGs>q)lVy|8b zJAlHTycSO5q(ZuhO|m3I@|-$xh{3y4?gokQRJl>P(TK@2%fH&(nk2`a$@e)D~wLk3zykVRsjV%Mb|p16&B%BLDyZ diff --git a/App/en/HiGeom.resources.dll b/App/en/HiGeom.resources.dll index 8cf43634799692652c7e58a1778a7742d13860bc..69f4fa766badeaeacedb229052d2faf7a678a7dd 100644 GIT binary patch delta 231 zcmW-YJ8r^207Pf)SSV3~j5tB0?TDPUVSg18sX|Ldxi;%AM~FfdrAUEA!6B&79)yxJ zAVEXTZ*4tk^faTH(>Y!IJxqt!)8>B^66&_$OAuFj{INI3&)@S~aM@L(85!0ux!{R54Z78E2De1tUQb(FRi zHnt`fmXwx?j^q}Td(WBKU^ZAhwx72*@0{F)tCRDV zk@$4_V8((W2o-7sFdPb$5Lj(iZ*}PYzyytQr<~PpFjZrszod@W?LR?7%lk9w2y#&D LrPn5!^w<0W7=y98L29zOv4wGJvVn!Ap>bl8v9Xy&ilteK zrP1c8>_3?}br={Km>C!tbT&`tdd|dXvbmnOo-x>jL7Tyx!IU8dNSZSwGbAxs0wG8w z87OARV8D3#XZr0t zD$mjYmBN7Kby-md6KJESYv#4_43;$;U%M%ziH5_<*)Wrv-cSFsu7*MmK&OwheWsWe zy@k3bGy;r>u!!*D4h`n0g&tZEPH7bC#T}-SqkIn{hNy&D+0Bl5dw1?SLWPF Application Source Code

The source code of HiNC-2025-win-desktop project is at the git repository:

https://superhightech-gitea.webredirect.org/HiNC-Deploy/HiNC-2025-win-desktop.git

-

Web Page Application Source Code

+

Web Service Application Source Code

HiNC-2025-webapi apply vue.

The source code of HiNC-2025-webapi project is at the git repository:

https://superhightech-gitea.webredirect.org/HiNC-Deploy/HiNC-2025-webapi.git

Web Architecture Patterns

Step by Step Program Construction Check List

diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/hinc-web-service/disp-web-service.html b/App/wwwroot/HiAPI-docsite/brief/dev-doc/hinc-web-service/disp-web-service.html new file mode 100644 index 0000000..4a23699 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/hinc-web-service/disp-web-service.html @@ -0,0 +1,165 @@ + + + + + Rendering Canvas on Web Service Application | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+

Rendering Canvas on Web Service Application

+ +

Overview

+

In the HiNC-2025-webapi example project, the 3D canvas rendering is handled through a WebSocket-based architecture using SignalR Hub connections.

+

Core Component

+

The primary component for 3D canvas rendering:

+
    +
  • Location: wwwroot/disp/rendering-canvas.js
  • +
  • Purpose: Manages all 3D canvas rendering operations
  • +
+

Connection Management

+

SignalR Hub Connection

+
    +
  • Components using WebSocket (corresponding to SignalR Hub) receive a unique Hub connectionId
  • +
  • The rendering-canvas component maintains a primary connectionId
  • +
  • This ID serves as the index for all canvas data stream operations
  • +
+

Connection ID Naming Convention

+

In other components, the connection ID may be referenced with different naming patterns:

+
    +
  • renderingConnectionId
  • +
  • rendering-connectionId
  • +
  • Similar variations
  • +
+

Naming Convention Examples

+

Different components may reference the connection ID with various naming patterns:

+
    +
  • player-panel component: uses renderingConnectionId (wwwroot/player/player-panel.js)
  • +
  • Other components may use similar variations like rendering-connectionId
  • +
+

Data Flow Architecture

+

Frontend Responsibilities

+
    +
  • The rendering-canvas component handles data stream transmission via WebSocket
  • +
  • Manages real-time rendering updates through the connection ID
  • +
+

Backend Integration

+

Multiple backend controllers can specify content to be rendered on the rendering-canvas. The architecture is designed to be flexible and reusable across different features.

+

Example: Player Controller

+

One example of backend integration:

+
    +
  • File: Players/PlayerController.cs
  • +
  • Method: InitializePlayer
  • +
  • Purpose: Initializes player-specific rendering content
  • +
+

This is just one example - any controller in the application can interact with the rendering canvas using the same connection ID mechanism to display different types of 3D content

+

Key Points

+
    +
  • All canvas data stream operations are indexed by the connection ID
  • +
  • The WebSocket connection enables real-time rendering updates
  • +
  • The architecture separates rendering logic (frontend) from content specification (backend)
  • +
+ +
+ +
+
+ + + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.html b/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.html index 325215e..3186c29 100644 --- a/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.html +++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.html @@ -39,6 +39,16 @@ +
  • + + Web Service Architecture + + +
  • Initialize HiAPI
  • diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.json b/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.json index 6f87c37..04d1d84 100644 --- a/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.json +++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/toc.json @@ -1,2 +1,2 @@ -{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"System Requirements","href":"system-requirements.html","topicHref":"system-requirements.html"},{"name":"Getting Started","href":"getting-started/index.html","topicHref":"getting-started/index.html"},{"name":"Sketch to Build HiNC GUI","href":"build-hinc/index.html","topicHref":"build-hinc/index.html","items":[{"name":"General Rules","href":"build-hinc/general-rules.html","topicHref":"build-hinc/general-rules.html"},{"name":"Common Patterns","items":[{"name":"DictionaryService and DictionaryHub Pattern","href":"build-hinc/common/dictionary-service-pattern.html","topicHref":"build-hinc/common/dictionary-service-pattern.html"}]},{"name":"Initialize HiAPI","href":"build-hinc/initialize-hiapi.html","topicHref":"build-hinc/initialize-hiapi.html"},{"name":"Main Panel","href":"build-hinc/main-panel.html","topicHref":"build-hinc/main-panel.html"},{"name":"Bottom Message Bar","href":"build-hinc/message-section-on-main-panel.html","topicHref":"build-hinc/message-section-on-main-panel.html"},{"name":"RenderingCanvas Tool Bar","href":"build-hinc/renderingcanvas-tool-bar.html","topicHref":"build-hinc/renderingcanvas-tool-bar.html"},{"name":"Player Panel","href":"build-hinc/player/index.html","topicHref":"build-hinc/player/index.html","items":[{"name":"Player Tool Bar","href":"build-hinc/player/player-tool-bar.html","topicHref":"build-hinc/player/player-tool-bar.html"},{"name":"Player Extended RenderingCanvas Tool Bar","href":"build-hinc/player/player-extended-renderingcanvas-tool-bar.html","topicHref":"build-hinc/player/player-extended-renderingcanvas-tool-bar.html"},{"name":"Selected-Step Info Panel","href":"build-hinc/player/selected-step-info-panel.html","topicHref":"build-hinc/player/selected-step-info-panel.html"}]},{"name":"Session Message Panel","href":"build-hinc/session-message-panel/index.html","topicHref":"build-hinc/session-message-panel/index.html"},{"name":"Preference","items":[{"name":"Preference Menu","href":"build-hinc/preference/index.html","topicHref":"build-hinc/preference/index.html"},{"name":"Graphic-Cache Dropdown","href":"build-hinc/preference/graphic-cache-dropdown.html","topicHref":"build-hinc/preference/graphic-cache-dropdown.html"},{"name":"Language Selection","href":"build-hinc/preference/language-selection-submenu.html","topicHref":"build-hinc/preference/language-selection-submenu.html"},{"name":"Step Present Preference","href":"build-hinc/preference/step-present-preference-page.html","topicHref":"build-hinc/preference/step-present-preference-page.html"}]},{"name":"Widget","items":[{"name":"Vec3d Control","href":"build-hinc/widget/vec3d/index.html","topicHref":"build-hinc/widget/vec3d/index.html"},{"name":"Object Management Menu Button","href":"build-hinc/widget/object-management-menu-button.html","topicHref":"build-hinc/widget/object-management-menu-button.html"},{"name":"GUI File Path Assignment","href":"build-hinc/widget/gui-file-path-assignment.html","topicHref":"build-hinc/widget/gui-file-path-assignment.html"},{"name":"Polar Resolution 2D Panel","href":"build-hinc/widget/polar-resolution-2d-panel.html","topicHref":"build-hinc/widget/polar-resolution-2d-panel.html"},{"name":"Numeric Input/Output Utilities","href":"build-hinc/widget/numeric-io-utilities.html","topicHref":"build-hinc/widget/numeric-io-utilities.html"},{"name":"Resizable Bar","href":"build-hinc/widget/resizable-bar.html","topicHref":"build-hinc/widget/resizable-bar.html"}]},{"name":"Geometry Panels","href":"build-hinc/geom/index.html","topicHref":"build-hinc/geom/index.html","items":[{"name":"Box3d Control","href":"build-hinc/geom/box3d-control.html","topicHref":"build-hinc/geom/box3d-control.html"},{"name":"Cylindroid Control","href":"build-hinc/geom/cylindroid-control.html","topicHref":"build-hinc/geom/cylindroid-control.html"},{"name":"Geometry Combination Control","href":"build-hinc/geom/geom-combination-control.html","topicHref":"build-hinc/geom/geom-combination-control.html"},{"name":"Geometry Management Panel","href":"build-hinc/geom/geom-manage-control.html","topicHref":"build-hinc/geom/geom-manage-control.html"},{"name":"Runtime Geometry Panel","href":"build-hinc/geom/runtime-geom-panel.html","topicHref":"build-hinc/geom/runtime-geom-panel.html"},{"name":"STL File Control","href":"build-hinc/geom/stlfile-control.html","topicHref":"build-hinc/geom/stlfile-control.html"},{"name":"Transformation Geometry Control","href":"build-hinc/geom/transformation-geom-control.html","topicHref":"build-hinc/geom/transformation-geom-control.html"}]},{"name":"Mechanism","items":[{"name":"Transformers","href":"build-hinc/mech/topo/transformers.html","topicHref":"build-hinc/mech/topo/transformers.html"},{"name":"Fixture Page","href":"build-hinc/mech/fixture-page.html","topicHref":"build-hinc/mech/fixture-page.html"},{"name":"Workpiece Page","href":"build-hinc/mech/workpiece-page.html","topicHref":"build-hinc/mech/workpiece-page.html"}]},{"name":"Controller Page","href":"build-hinc/controller/index.html","topicHref":"build-hinc/controller/index.html"},{"name":"Mission Page","href":"build-hinc/mission/index.html","topicHref":"build-hinc/mission/index.html","items":[{"name":"Script Command Panel","href":"build-hinc/mission/script-command-panel.html","topicHref":"build-hinc/mission/script-command-panel.html"},{"name":"List Command Panel","href":"build-hinc/mission/ListCommand-panel.html","topicHref":"build-hinc/mission/ListCommand-panel.html"},{"name":"PreSetting Command Panel","href":"build-hinc/mission/PreSettingCommand-panel.html","topicHref":"build-hinc/mission/PreSettingCommand-panel.html"},{"name":"NcOptOption Panel","href":"build-hinc/mission/NcOptOption-panel.html","topicHref":"build-hinc/mission/NcOptOption-panel.html"},{"name":"NcFile Command Panel","href":"build-hinc/mission/NcFileCommand-panel.html","topicHref":"build-hinc/mission/NcFileCommand-panel.html"},{"name":"NcCode Command Panel","href":"build-hinc/mission/NcCodeCommand-panel.html","topicHref":"build-hinc/mission/NcCodeCommand-panel.html"},{"name":"PostExecution Command Panel","href":"build-hinc/mission/PostExecutionCommand-panel.html","topicHref":"build-hinc/mission/PostExecutionCommand-panel.html"}]}]},{"name":"Logic","items":[{"name":"Basic Geometry","href":"basic/geom/basic-geometry.html","topicHref":"basic/geom/basic-geometry.html"},{"name":"Rendering","href":"basic/rendering/index.html","topicHref":"basic/rendering/index.html","items":[{"name":"Using RenderingCanvas with DispEngine","href":"basic/rendering/rendering-canvas/index.html","topicHref":"basic/rendering/rendering-canvas/index.html"},{"name":"Building Your Own Rendering Canvas","href":"basic/rendering/rendering-canvas/custom-implementation.html","topicHref":"basic/rendering/rendering-canvas/custom-implementation.html"},{"name":"Drawing","href":"basic/rendering/drawing/index.html","topicHref":"basic/rendering/drawing/index.html"}]},{"name":"Mechanism Topology","items":[{"name":"Overview","href":"basic/mechanism/index.html","topicHref":"basic/mechanism/index.html"},{"name":"Topology Structure","href":"basic/mechanism/Topo/index.html","topicHref":"basic/mechanism/Topo/index.html"},{"name":"Transformers","href":"basic/mechanism/transformers/index.html","topicHref":"basic/mechanism/transformers/index.html"},{"name":"Render Topology","href":"basic/mechanism/render-topology/index.html","topicHref":"basic/mechanism/render-topology/index.html"}]},{"name":"XML IO","href":"basic/common/xml-io.html","topicHref":"basic/common/xml-io.html"}]}]} +{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"System Requirements","href":"system-requirements.html","topicHref":"system-requirements.html"},{"name":"Getting Started","href":"getting-started/index.html","topicHref":"getting-started/index.html"},{"name":"Sketch to Build HiNC GUI","href":"build-hinc/index.html","topicHref":"build-hinc/index.html","items":[{"name":"General Rules","href":"build-hinc/general-rules.html","topicHref":"build-hinc/general-rules.html"},{"name":"Common Patterns","items":[{"name":"DictionaryService and DictionaryHub Pattern","href":"build-hinc/common/dictionary-service-pattern.html","topicHref":"build-hinc/common/dictionary-service-pattern.html"}]},{"name":"Web Service Architecture","items":[{"name":"Rendering Canvas on Web Service","href":"build-hinc/hinc-web-service/disp-web-service.md","topicHref":"build-hinc/hinc-web-service/disp-web-service.md"}]},{"name":"Initialize HiAPI","href":"build-hinc/initialize-hiapi.html","topicHref":"build-hinc/initialize-hiapi.html"},{"name":"Main Panel","href":"build-hinc/main-panel.html","topicHref":"build-hinc/main-panel.html"},{"name":"Bottom Message Bar","href":"build-hinc/message-section-on-main-panel.html","topicHref":"build-hinc/message-section-on-main-panel.html"},{"name":"RenderingCanvas Tool Bar","href":"build-hinc/renderingcanvas-tool-bar.html","topicHref":"build-hinc/renderingcanvas-tool-bar.html"},{"name":"Player Panel","href":"build-hinc/player/index.html","topicHref":"build-hinc/player/index.html","items":[{"name":"Player Tool Bar","href":"build-hinc/player/player-tool-bar.html","topicHref":"build-hinc/player/player-tool-bar.html"},{"name":"Player Extended RenderingCanvas Tool Bar","href":"build-hinc/player/player-extended-renderingcanvas-tool-bar.html","topicHref":"build-hinc/player/player-extended-renderingcanvas-tool-bar.html"},{"name":"Selected-Step Info Panel","href":"build-hinc/player/selected-step-info-panel.html","topicHref":"build-hinc/player/selected-step-info-panel.html"}]},{"name":"Session Message Panel","href":"build-hinc/session-message-panel/index.html","topicHref":"build-hinc/session-message-panel/index.html"},{"name":"Preference","items":[{"name":"Preference Menu","href":"build-hinc/preference/index.html","topicHref":"build-hinc/preference/index.html"},{"name":"Graphic-Cache Dropdown","href":"build-hinc/preference/graphic-cache-dropdown.html","topicHref":"build-hinc/preference/graphic-cache-dropdown.html"},{"name":"Language Selection","href":"build-hinc/preference/language-selection-submenu.html","topicHref":"build-hinc/preference/language-selection-submenu.html"},{"name":"Step Present Preference","href":"build-hinc/preference/step-present-preference-page.html","topicHref":"build-hinc/preference/step-present-preference-page.html"}]},{"name":"Widget","items":[{"name":"Vec3d Control","href":"build-hinc/widget/vec3d/index.html","topicHref":"build-hinc/widget/vec3d/index.html"},{"name":"Object Management Menu Button","href":"build-hinc/widget/object-management-menu-button.html","topicHref":"build-hinc/widget/object-management-menu-button.html"},{"name":"GUI File Path Assignment","href":"build-hinc/widget/gui-file-path-assignment.html","topicHref":"build-hinc/widget/gui-file-path-assignment.html"},{"name":"Polar Resolution 2D Panel","href":"build-hinc/widget/polar-resolution-2d-panel.html","topicHref":"build-hinc/widget/polar-resolution-2d-panel.html"},{"name":"Numeric Input/Output Utilities","href":"build-hinc/widget/numeric-io-utilities.html","topicHref":"build-hinc/widget/numeric-io-utilities.html"},{"name":"Resizable Bar","href":"build-hinc/widget/resizable-bar.html","topicHref":"build-hinc/widget/resizable-bar.html"}]},{"name":"Geometry Panels","href":"build-hinc/geom/index.html","topicHref":"build-hinc/geom/index.html","items":[{"name":"Box3d Control","href":"build-hinc/geom/box3d-control.html","topicHref":"build-hinc/geom/box3d-control.html"},{"name":"Cylindroid Control","href":"build-hinc/geom/cylindroid-control.html","topicHref":"build-hinc/geom/cylindroid-control.html"},{"name":"Geometry Combination Control","href":"build-hinc/geom/geom-combination-control.html","topicHref":"build-hinc/geom/geom-combination-control.html"},{"name":"Geometry Management Panel","href":"build-hinc/geom/geom-manage-control.html","topicHref":"build-hinc/geom/geom-manage-control.html"},{"name":"Runtime Geometry Panel","href":"build-hinc/geom/runtime-geom-panel.html","topicHref":"build-hinc/geom/runtime-geom-panel.html"},{"name":"STL File Control","href":"build-hinc/geom/stlfile-control.html","topicHref":"build-hinc/geom/stlfile-control.html"},{"name":"Transformation Geometry Control","href":"build-hinc/geom/transformation-geom-control.html","topicHref":"build-hinc/geom/transformation-geom-control.html"}]},{"name":"Mechanism","items":[{"name":"Transformers","href":"build-hinc/mech/topo/transformers.html","topicHref":"build-hinc/mech/topo/transformers.html"},{"name":"Fixture Page","href":"build-hinc/mech/fixture-page.html","topicHref":"build-hinc/mech/fixture-page.html"},{"name":"Workpiece Page","href":"build-hinc/mech/workpiece-page.html","topicHref":"build-hinc/mech/workpiece-page.html"}]},{"name":"Controller Page","href":"build-hinc/controller/index.html","topicHref":"build-hinc/controller/index.html"},{"name":"Mission Page","href":"build-hinc/mission/index.html","topicHref":"build-hinc/mission/index.html","items":[{"name":"Script Command Panel","href":"build-hinc/mission/script-command-panel.html","topicHref":"build-hinc/mission/script-command-panel.html"},{"name":"List Command Panel","href":"build-hinc/mission/ListCommand-panel.html","topicHref":"build-hinc/mission/ListCommand-panel.html"},{"name":"PreSetting Command Panel","href":"build-hinc/mission/PreSettingCommand-panel.html","topicHref":"build-hinc/mission/PreSettingCommand-panel.html"},{"name":"NcOptOption Panel","href":"build-hinc/mission/NcOptOption-panel.html","topicHref":"build-hinc/mission/NcOptOption-panel.html"},{"name":"NcFile Command Panel","href":"build-hinc/mission/NcFileCommand-panel.html","topicHref":"build-hinc/mission/NcFileCommand-panel.html"},{"name":"NcCode Command Panel","href":"build-hinc/mission/NcCodeCommand-panel.html","topicHref":"build-hinc/mission/NcCodeCommand-panel.html"},{"name":"PostExecution Command Panel","href":"build-hinc/mission/PostExecutionCommand-panel.html","topicHref":"build-hinc/mission/PostExecutionCommand-panel.html"}]}]},{"name":"Logic","items":[{"name":"Basic Geometry","href":"basic/geom/basic-geometry.html","topicHref":"basic/geom/basic-geometry.html"},{"name":"Rendering","href":"basic/rendering/index.html","topicHref":"basic/rendering/index.html","items":[{"name":"Using RenderingCanvas with DispEngine","href":"basic/rendering/rendering-canvas/index.html","topicHref":"basic/rendering/rendering-canvas/index.html"},{"name":"Building Your Own Rendering Canvas","href":"basic/rendering/rendering-canvas/custom-implementation.html","topicHref":"basic/rendering/rendering-canvas/custom-implementation.html"},{"name":"Drawing","href":"basic/rendering/drawing/index.html","topicHref":"basic/rendering/drawing/index.html"}]},{"name":"Mechanism Topology","items":[{"name":"Overview","href":"basic/mechanism/index.html","topicHref":"basic/mechanism/index.html"},{"name":"Topology Structure","href":"basic/mechanism/Topo/index.html","topicHref":"basic/mechanism/Topo/index.html"},{"name":"Transformers","href":"basic/mechanism/transformers/index.html","topicHref":"basic/mechanism/transformers/index.html"},{"name":"Render Topology","href":"basic/mechanism/render-topology/index.html","topicHref":"basic/mechanism/render-topology/index.html"}]},{"name":"XML IO","href":"basic/common/xml-io.html","topicHref":"basic/common/xml-io.html"}]}]} diff --git a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Doc-Task/index.html b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Doc-Task/index.html index a747230..ae27f5c 100644 --- a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Doc-Task/index.html +++ b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Doc-Task/index.html @@ -94,8 +94,7 @@

    語法與功能

    腳本 (Script) 中的標題 (Title) 的功能僅為註記,無其他功能,腳本的內容與標題不一定要匹配。

    -

    腳本預設為簡易模式 (Simple Mode),該模式基於C#語言並簡化部分指令;如未勾選簡易模式,則腳本使用原生C#語言。

    -

    簡易模式腳本在執行前會先轉換為C#語言再執行。

    +

    腳本使用原生C#語言。

    Note

    基本 C# 語法

    @@ -104,22 +103,8 @@
  • 可以使用 // 作為行尾註解。
  • 可以使用double.PositiveInfinitydouble.NegativeInfinity表示實數中的無限大及無限小。
  • -

    簡易模式腳本範例:

    -
    RunNcFile("NC/file1.nc");
    -
    -
    -
    -
    Note
    -

    簡易模式與原生C#語言(進階)

    -

    本段供有C#開發經驗的工程師參考。

    -

    腳本執行函數回傳的物件IEnumerable<Action>

    -

    撥放器在Action之間可以執行暫停(Pause)。

    -

    與簡易模式腳本範例對照的典型原生C#語言腳本範例:

    -
    IEnumerable<Action> Run(){
    -    foreach(var action in RunNcFile("NC/file1.nc")) yield return action;
    -    yield return null;
    -    }
    -return Run();
    +

    腳本範例:

    +
    PlayNcFile("NC/file1.nc");
     

    @@ -128,8 +113,8 @@ return Run();
    Tip

    指令範例

    -
    RunNcFile("NC/file1.nc");
    -RunNcFile("NC/file2.nc");
    +
    PlayNcFile("NC/file1.nc");
    +PlayNcFile("NC/file2.nc");
     WriteShotFiles("Output/[NcName].shot.csv", 1);
     // 輸出檔案至:
     // Output/file1.nc.shot.csv
    diff --git a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Mapping/index.html b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Mapping/index.html
    index 7bfb1aa..7dac018 100644
    --- a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Mapping/index.html
    +++ b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Mapping/index.html
    @@ -116,7 +116,7 @@
     
    ClearTimeMappingData();
     AddTimeDataByFile( "lineA", "Mapping/sensor1.csv", "18:25:51.7100", "18:26:12.9910");
     AddTimeDataByFile( "lineB", "Mapping/sensor1.csv", "18:26:30.5750", "18:27:12.2880");
    -RunNcFile("NC/file1.nc")
    +PlayNcFile("NC/file1.nc")
     

    輸入檔案格式為csv,須包含時間資訊,其餘資訊可選擇包含或不包含。

    diff --git a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/MillingTraining/index.html b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/MillingTraining/index.html index a4eac04..8bfce93 100644 --- a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/MillingTraining/index.html +++ b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/MillingTraining/index.html @@ -108,7 +108,7 @@ ReTrainMillingPara(<樣本旗標>, <檔案輸出路徑>);
    ClearTimeMappingData();
     AddTimeDataByFile( "lineA", "Mapping/sensor1.csv", "18:25:51.7100", "18:26:12.9910");
     AddTimeDataByFile( "lineB", "Mapping/sensor1.csv", "18:26:30.5750", "18:27:12.2880");
    -RunNcFile("NC/file1.nc")
    +PlayNcFile("NC/file1.nc")
     TrainMillingPara(Fx|Fy|Fz, "StainlessSteel.mp");
     
    @@ -118,7 +118,7 @@ TrainMillingPara(Fx|Fy|Fz, "StainlessSteel.mp");
    ClearTimeMappingData();
     AddTimeDataByFile( "lineA", "Mapping/sensor1.csv", "18:25:51.7100", "18:26:12.9910");
     AddTimeDataByFile( "lineB", "Mapping/sensor1.csv", "18:26:30.5750", "18:27:12.2880");
    -RunNcFile("NC/file1.nc")
    +PlayNcFile("NC/file1.nc")
     ReTrainMillingPara(Fz|Mx|My|Mz, "StainlessSteel.mp");
     
    diff --git a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/NcOptimization/index.html b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/NcOptimization/index.html index 91a65dd..9541473 100644 --- a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/NcOptimization/index.html +++ b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/NcOptimization/index.html @@ -195,10 +195,10 @@ OptExtendedPostDistance_mm = 2; OptSpindlePowerSafetyFactor = 1.5; OptSpindleTorqueSafetyFactor = 1.5; OptPreferedForce_N = double.PositiveInfinity; -RunNcFile("NC/file1.nc"); +PlayNcFile("NC/file1.nc"); OptRapidFeed_mmdmin = 8000; -RunNcFile("NC/file2.nc"); +PlayNcFile("NC/file2.nc"); OptimizeToFiles("Cache/Opt-[NcName]");
    diff --git a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/PlayCsvFile/play-csv-file.html b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/PlayCsvFile/play-csv-file.html new file mode 100644 index 0000000..0986008 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/PlayCsvFile/play-csv-file.html @@ -0,0 +1,149 @@ + + + + + 執行CSV檔 | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    +

    執行CSV檔

    + +

    以CSV格式檔案驅動仿真。

    +

    執行NC檔指令為 PlayCsvFile ,<檔案路徑> 的根目錄為專案目錄。

    +
    +
    Note
    +

    指令格式

    +
    PlayCsvFile(<檔案路徑>);
    +
    +
    +
    +
    Tip
    +

    指令範例

    +
    PlayCsvFile("Data/file1.csv");
    +
    +
    +
    +
    Tip
    +

    本撥放器可直接讀取<xref:Cmd-WriteStepFiles>匯出之檔案。

    +
    +

    檔案格式

    +

    驅動的CSV檔案為逗號分隔,第一列須為標頭列。其餘每列為一步。標頭大小寫不同,會被視為不同資料。

    +

    驅動欄位

    +

    依預設設定,關鍵的 CSV 欄位標題如下。這些欄位的資料會驅動模擬。

    +

    MC.X, MC.Y, MC.Z, MC.A, MC.B, MC.C, +ToolId, +SpindleSpeed, +Feedrate_mmdmin, +StepDuration

    +

    這些欄位標題可以在 .hincprojCsvRunnerConfig 中更改。

    +

    自訂欄位

    +

    其他資料如感測器、事後分析資料等也可放入CSV檔中,系統支援該資料的工件顏色梯度圖、時間序列圖、點選追蹤功能。

    +
    +
    Tip
    +

    本範例檔案為可驅動系統的CSV檔案。

    +
    + +
    + +
    +
    + + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/RunNcFile/index.html b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/PlayNcFile/index.html similarity index 95% rename from App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/RunNcFile/index.html rename to App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/PlayNcFile/index.html index 640a8d4..ca8602d 100644 --- a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/RunNcFile/index.html +++ b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/PlayNcFile/index.html @@ -87,17 +87,17 @@

    執行NC檔

    -

    執行NC檔指令為 RunNcFile ,<檔案路徑> 的根目錄為專案目錄。

    +

    執行NC檔指令為 PlayNcFile ,<檔案路徑> 的根目錄為專案目錄。

    Note

    指令格式

    -
    RunNcFile(<檔案路徑>);
    +
    PlayNcFile(<檔案路徑>);
     
    Tip

    指令範例

    -
    RunNcFile("NC/file1.nc");
    +
    PlayNcFile("NC/file1.nc");
     
    diff --git a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/RuntimeGeom/index.html b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/RuntimeGeom/index.html index 0bb9af3..7b51b7a 100644 --- a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/RuntimeGeom/index.html +++ b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/RuntimeGeom/index.html @@ -116,7 +116,7 @@ WriteRuntimeGeomToStl(<檔案路徑>, <解析度(mm)> = 0);
    Tip

    指令範例

    ReadRuntimeGeom("Cache/init.wct");
    -RunNcFile("NC/file1.nc");
    +PlayNcFile("NC/file1.nc");
     WriteRuntimeGeom("Cache/file1.wct");
     WriteRuntimeGeomToStl("Output/file1.stl");
     
    diff --git a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/toc.html b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/toc.html index 7e50396..12c96c0 100644 --- a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/toc.html +++ b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/toc.html @@ -122,7 +122,10 @@ 解析度
  • - 運行NC檔案 + 執行NC檔案 +
  • +
  • + 執行CSV檔案
  • 運行時幾何 diff --git a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/toc.json b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/toc.json index 39845a7..4f14249 100644 --- a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/toc.json +++ b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/toc.json @@ -1,2 +1,2 @@ -{"items":[{"name":"HiNC 使用說明","href":"index.html","topicHref":"index.html"},{"name":"使用者條款","href":"license/index.html","topicHref":"license/index.html"},{"name":"HiNC啟用","items":[{"name":"Windows系統啟用","href":"startup/windows.html","topicHref":"startup/windows.html"},{"name":"單機多站配置","href":"startup/multi-station.html","topicHref":"startup/multi-station.html"},{"name":"多主機授權設置","href":"startup/delegate-auth.html","topicHref":"startup/delegate-auth.html"},{"name":"教學視頻","href":"startup/tutorial.html","topicHref":"startup/tutorial.html"}]},{"name":"系統","items":[{"name":"檔案總管","href":"system/file-explorer.html","topicHref":"system/file-explorer.html"}]},{"name":"設備","items":[{"name":"錨點","href":"mech/anchor.html","topicHref":"mech/anchor.html"},{"name":"工具機建置","href":"equipment/build-machine-tool.html","topicHref":"equipment/build-machine-tool.html"},{"name":"冷卻液","href":"equipment/coolant.html","topicHref":"equipment/coolant.html"}]},{"name":"控制器","items":[{"name":"海德漢支援","href":"controllers/heidenhain-support.html","topicHref":"controllers/heidenhain-support.html"},{"name":"通用NC碼支援","href":"controllers/iso-nc-support.html","topicHref":"controllers/iso-nc-support.html"}]},{"name":"加工工具","items":[{"name":"銑刀","href":"milling-tool/cutter.html","topicHref":"milling-tool/cutter.html"},{"name":"APT工具","href":"milling-tool/apt.html","topicHref":"milling-tool/apt.html"},{"name":"智慧刀把","href":"milling-tool/smart-tool-holder.html","topicHref":"milling-tool/smart-tool-holder.html"}]},{"name":"腳本命令","items":[{"name":"文件任務","href":"script/Doc-Task/index.html","topicHref":"script/Doc-Task/index.html"},{"name":"碰撞檢測","href":"script/Collision/index.html","topicHref":"script/Collision/index.html"},{"name":"離料","href":"script/FlyPiece/index.html","topicHref":"script/FlyPiece/index.html"},{"name":"幾何差異","href":"script/GeomDiff/index.html","topicHref":"script/GeomDiff/index.html"},{"name":"映射","href":"script/Mapping/index.html","topicHref":"script/Mapping/index.html"},{"name":"銑削訓練","href":"script/MillingTraining/index.html","topicHref":"script/MillingTraining/index.html"},{"name":"NC優化","href":"script/NcOptimization/index.html","topicHref":"script/NcOptimization/index.html"},{"name":"解析度","href":"script/Resolution/index.html","topicHref":"script/Resolution/index.html"},{"name":"運行NC檔案","href":"script/RunNcFile/index.html","topicHref":"script/RunNcFile/index.html"},{"name":"運行時幾何","href":"script/RuntimeGeom/index.html","topicHref":"script/RuntimeGeom/index.html"},{"name":"輸出Shot檔案","href":"script/WriteShotFiles/index.html","topicHref":"script/WriteShotFiles/index.html"},{"name":"輸出Step檔案","href":"script/WriteStepFiles/index.html","topicHref":"script/WriteStepFiles/index.html"}]},{"name":"輸出","items":[{"name":"模擬步階輸出資訊","href":"output/simulation-step-output.html","topicHref":"output/simulation-step-output.html"}]},{"name":"優化","items":[{"name":"NC優化","href":"optimization/index.html","topicHref":"optimization/index.html"}]},{"name":"理論與技術","items":[{"name":"銑削物理座標系","href":"theory-and-technique/milling-physics-coordinates.html","topicHref":"theory-and-technique/milling-physics-coordinates.html"},{"name":"評估製程可加工性","href":"availability/index.html","topicHref":"availability/index.html"},{"name":"刀具壽命與磨耗","href":"technique/wear.html","topicHref":"technique/wear.html"}]}]} +{"items":[{"name":"HiNC 使用說明","href":"index.html","topicHref":"index.html"},{"name":"使用者條款","href":"license/index.html","topicHref":"license/index.html"},{"name":"HiNC啟用","items":[{"name":"Windows系統啟用","href":"startup/windows.html","topicHref":"startup/windows.html"},{"name":"單機多站配置","href":"startup/multi-station.html","topicHref":"startup/multi-station.html"},{"name":"多主機授權設置","href":"startup/delegate-auth.html","topicHref":"startup/delegate-auth.html"},{"name":"教學視頻","href":"startup/tutorial.html","topicHref":"startup/tutorial.html"}]},{"name":"系統","items":[{"name":"檔案總管","href":"system/file-explorer.html","topicHref":"system/file-explorer.html"}]},{"name":"設備","items":[{"name":"錨點","href":"mech/anchor.html","topicHref":"mech/anchor.html"},{"name":"工具機建置","href":"equipment/build-machine-tool.html","topicHref":"equipment/build-machine-tool.html"},{"name":"冷卻液","href":"equipment/coolant.html","topicHref":"equipment/coolant.html"}]},{"name":"控制器","items":[{"name":"海德漢支援","href":"controllers/heidenhain-support.html","topicHref":"controllers/heidenhain-support.html"},{"name":"通用NC碼支援","href":"controllers/iso-nc-support.html","topicHref":"controllers/iso-nc-support.html"}]},{"name":"加工工具","items":[{"name":"銑刀","href":"milling-tool/cutter.html","topicHref":"milling-tool/cutter.html"},{"name":"APT工具","href":"milling-tool/apt.html","topicHref":"milling-tool/apt.html"},{"name":"智慧刀把","href":"milling-tool/smart-tool-holder.html","topicHref":"milling-tool/smart-tool-holder.html"}]},{"name":"腳本命令","items":[{"name":"文件任務","href":"script/Doc-Task/index.html","topicHref":"script/Doc-Task/index.html"},{"name":"碰撞檢測","href":"script/Collision/index.html","topicHref":"script/Collision/index.html"},{"name":"離料","href":"script/FlyPiece/index.html","topicHref":"script/FlyPiece/index.html"},{"name":"幾何差異","href":"script/GeomDiff/index.html","topicHref":"script/GeomDiff/index.html"},{"name":"映射","href":"script/Mapping/index.html","topicHref":"script/Mapping/index.html"},{"name":"銑削訓練","href":"script/MillingTraining/index.html","topicHref":"script/MillingTraining/index.html"},{"name":"NC優化","href":"script/NcOptimization/index.html","topicHref":"script/NcOptimization/index.html"},{"name":"解析度","href":"script/Resolution/index.html","topicHref":"script/Resolution/index.html"},{"name":"執行NC檔案","href":"script/PlayNcFile/index.html","topicHref":"script/PlayNcFile/index.html"},{"name":"執行CSV檔案","href":"script/PlayCsvFile/play-csv-file.html","topicHref":"script/PlayCsvFile/play-csv-file.html"},{"name":"運行時幾何","href":"script/RuntimeGeom/index.html","topicHref":"script/RuntimeGeom/index.html"},{"name":"輸出Shot檔案","href":"script/WriteShotFiles/index.html","topicHref":"script/WriteShotFiles/index.html"},{"name":"輸出Step檔案","href":"script/WriteStepFiles/index.html","topicHref":"script/WriteStepFiles/index.html"}]},{"name":"輸出","items":[{"name":"模擬步階輸出資訊","href":"output/simulation-step-output.html","topicHref":"output/simulation-step-output.html"}]},{"name":"優化","items":[{"name":"NC優化","href":"optimization/index.html","topicHref":"optimization/index.html"}]},{"name":"理論與技術","items":[{"name":"銑削物理座標系","href":"theory-and-technique/milling-physics-coordinates.html","topicHref":"theory-and-technique/milling-physics-coordinates.html"},{"name":"評估製程可加工性","href":"availability/index.html","topicHref":"availability/index.html"},{"name":"刀具壽命與磨耗","href":"technique/wear.html","topicHref":"technique/wear.html"}]}]} diff --git a/App/wwwroot/HiAPI-docsite/index.json b/App/wwwroot/HiAPI-docsite/index.json index 65d810f..9ec149d 100644 --- a/App/wwwroot/HiAPI-docsite/index.json +++ b/App/wwwroot/HiAPI-docsite/index.json @@ -4772,7 +4772,7 @@ "brief/dev-doc/build-hinc/index.html": { "href": "brief/dev-doc/build-hinc/index.html", "title": "Sketch to Build HiNC GUI | HiAPI-C# 2025", - "summary": "Sketch to Build HiNC GUI Apply General Rules to build the HiNC GUI. WPF Application Source Code The source code of HiNC-2025-win-desktop project is at the git repository: https://superhightech-gitea.webredirect.org/HiNC-Deploy/HiNC-2025-win-desktop.git Web Page Application Source Code HiNC-2025-webapi apply vue. The source code of HiNC-2025-webapi project is at the git repository: https://superhightech-gitea.webredirect.org/HiNC-Deploy/HiNC-2025-webapi.git Web Architecture Patterns DictionaryService and DictionaryHub Pattern - Connection-scoped object indexing for hierarchical components Step by Step Program Construction Check List Tip If you are using AI agent to build the application: Ask AI to do only one job at one time to ensure the quality. Create and config a application project. Set the project platform to x64. Create a application project. Add HiNc packages to the project. See Getting Started to config the packages. Note Add Hi.Wpf packages to the project if the building WPF project. Create Main Window, set the layout according to Main Panel Layout. Build Message Section according to Message Section on Main Panel. Initialize HiAPI at application entry point according to Initialize HiAPI. Set behavior of Navigation Menu/Project according to Behavior of Navigation Menu/Project. Create RenderingCanvas Tool Bar for later usage. Create by Player Panel the Player Panel Step by Step Program Construction Check List. Build behavior of Graphic-Cache Dropdown. Build basic GUI widget component: Vec3dControl Build Transformers Build Geometry Panels. Build Fixture Page. Build Workpiece Page. Build Controller Page. Build ToolHouse Page. Add application icon, splash screen and etc.. (The content is consturcting..) Tip Complete the check list step by step. Compile to ensure the code work on each step completed. You MUST read the cited hyperlink before you do the job. ASK if you think the hyperlink is not work." + "summary": "Sketch to Build HiNC GUI Apply General Rules to build the HiNC GUI. WPF Application Source Code The source code of HiNC-2025-win-desktop project is at the git repository: https://superhightech-gitea.webredirect.org/HiNC-Deploy/HiNC-2025-win-desktop.git Web Service Application Source Code HiNC-2025-webapi apply vue. The source code of HiNC-2025-webapi project is at the git repository: https://superhightech-gitea.webredirect.org/HiNC-Deploy/HiNC-2025-webapi.git Web Architecture Patterns DictionaryService and DictionaryHub Pattern - Connection-scoped object indexing for hierarchical components Rendering Canvas on Web Service - WebSocket-based 3D canvas rendering architecture using SignalR Hub Step by Step Program Construction Check List Tip If you are using AI agent to build the application: Ask AI to do only one job at one time to ensure the quality. Create and config a application project. Set the project platform to x64. Create a application project. Add HiNc packages to the project. See Getting Started to config the packages. Note Add Hi.Wpf packages to the project if the building WPF project. Create Main Window, set the layout according to Main Panel Layout. Build Message Section according to Message Section on Main Panel. Initialize HiAPI at application entry point according to Initialize HiAPI. Set behavior of Navigation Menu/Project according to Behavior of Navigation Menu/Project. Create RenderingCanvas Tool Bar for later usage. Create by Player Panel the Player Panel Step by Step Program Construction Check List. Build behavior of Graphic-Cache Dropdown. Build basic GUI widget component: Vec3dControl Build Transformers Build Geometry Panels. Build Fixture Page. Build Workpiece Page. Build Controller Page. Build ToolHouse Page. Add application icon, splash screen and etc.. (The content is consturcting..) Tip Complete the check list step by step. Compile to ensure the code work on each step completed. You MUST read the cited hyperlink before you do the job. ASK if you think the hyperlink is not work." }, "brief/dev-doc/build-hinc/initialize-hiapi.html": { "href": "brief/dev-doc/build-hinc/initialize-hiapi.html", @@ -5004,6 +5004,11 @@ "title": "Getting Started with HiAPI | HiAPI-C# 2025", "summary": "Getting Started with HiAPI This guide will help you get started with HiAPI development. Installation Create a dotnet project. Setting the nuget server and account. The HiAPI installation is typical Nuget Package installation. You can apply global or local nuget setting. Here apply the local solution for startup. Create a file and name it to nuget.config in the same folder of your dotnet project file. the content of the file is as the following: In the dotnet project file, add the package reference. In the program file, setting the HiNC application initialization and finalization. using Hi.Disp; using Hi.HiNcKits; using Hi.Licenses; using Hi.MongoUtils; using System; namespace Sample { /// /// A sample class demonstrating initialization and usage of the HiAPI framework. /// Shows the basic setup of display engine, MongoDB server, licensing, and other core functionality. /// /// /// This example serves as an entry point for those getting started with HiAPI. /// It demonstrates proper initialization and teardown of key components. /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/HelloHiAPI.cs)] /// public static class HelloHiAPI { static int Main(string[] args) { Console.WriteLine(\"HiAPI starting.\"); LocalApp.AppBegin(); Console.WriteLine(\"Hello World! HiAPI.\"); LocalApp.AppEnd(); Console.WriteLine(\"HiAPI exited.\"); return 0; } } } Sample Code to Start a MachiningProject See the following sample code to start a HiAPI application. DemoBuildMachiningProject Build a MachiningProject. DemoUseMachiningProject Load a MachiningProject and run NC simulation. DemoRenderingMachiningProcessAndStripPosSelection Apply MachiningProject to 3D canvas with user-interaction in windows platform." }, + "brief/dev-doc/hinc-web-service/disp-web-service.html": { + "href": "brief/dev-doc/hinc-web-service/disp-web-service.html", + "title": "Rendering Canvas on Web Service Application | HiAPI-C# 2025", + "summary": "Rendering Canvas on Web Service Application Overview In the HiNC-2025-webapi example project, the 3D canvas rendering is handled through a WebSocket-based architecture using SignalR Hub connections. Core Component The primary component for 3D canvas rendering: Location: wwwroot/disp/rendering-canvas.js Purpose: Manages all 3D canvas rendering operations Connection Management SignalR Hub Connection Components using WebSocket (corresponding to SignalR Hub) receive a unique Hub connectionId The rendering-canvas component maintains a primary connectionId This ID serves as the index for all canvas data stream operations Connection ID Naming Convention In other components, the connection ID may be referenced with different naming patterns: renderingConnectionId rendering-connectionId Similar variations Naming Convention Examples Different components may reference the connection ID with various naming patterns: player-panel component: uses renderingConnectionId (wwwroot/player/player-panel.js) Other components may use similar variations like rendering-connectionId Data Flow Architecture Frontend Responsibilities The rendering-canvas component handles data stream transmission via WebSocket Manages real-time rendering updates through the connection ID Backend Integration Multiple backend controllers can specify content to be rendered on the rendering-canvas. The architecture is designed to be flexible and reusable across different features. Example: Player Controller One example of backend integration: File: Players/PlayerController.cs Method: InitializePlayer Purpose: Initializes player-specific rendering content This is just one example - any controller in the application can interact with the rendering canvas using the same connection ID mechanism to display different types of 3D content Key Points All canvas data stream operations are indexed by the connection ID The WebSocket connection enables real-time rendering updates The architecture separates rendering logic (frontend) from content specification (backend)" + }, "brief/dev-doc/index.html": { "href": "brief/dev-doc/index.html", "title": "HiAPI Overview | HiAPI-C# 2025", @@ -5247,7 +5252,7 @@ "brief/user-guide/zh-Hant/script/Doc-Task/index.html": { "href": "brief/user-guide/zh-Hant/script/Doc-Task/index.html", "title": "腳本 | HiAPI-C# 2025", - "summary": "腳本 任務(Task)頁面會依照順序執行腳本,頁面排版順序為由左至右,再由上至下。 腳本工具列 個別腳本的工具列的順序(Order)欄位為執行順序,如果沒有勾選啟用,則該任務會無視執行順序被略過。 工具欄可新增、刪除腳本。 語法與功能 腳本 (Script) 中的標題 (Title) 的功能僅為註記,無其他功能,腳本的內容與標題不一定要匹配。 腳本預設為簡易模式 (Simple Mode),該模式基於C#語言並簡化部分指令;如未勾選簡易模式,則腳本使用原生C#語言。 簡易模式腳本在執行前會先轉換為C#語言再執行。 Note 基本 C# 語法 指令以分號 ; 作為結束符號。 可以使用 // 作為行尾註解。 可以使用double.PositiveInfinity、double.NegativeInfinity表示實數中的無限大及無限小。 簡易模式腳本範例: RunNcFile(\"NC/file1.nc\"); Note 簡易模式與原生C#語言(進階) 本段供有C#開發經驗的工程師參考。 腳本執行函數回傳的物件IEnumerable。 撥放器在Action之間可以執行暫停(Pause)。 與簡易模式腳本範例對照的典型原生C#語言腳本範例: IEnumerable Run(){ foreach(var action in RunNcFile(\"NC/file1.nc\")) yield return action; yield return null; } return Run(); 多檔案輸出樣板 在有支援路徑樣板的指令中,路徑字串裡的[NcName]會被替換為NC檔案的名稱。 Tip 指令範例 RunNcFile(\"NC/file1.nc\"); RunNcFile(\"NC/file2.nc\"); WriteShotFiles(\"Output/[NcName].shot.csv\", 1); // 輸出檔案至: // Output/file1.nc.shot.csv // Output/file2.nc.shot.csv OptimizeToFiles(\"Cache/Opt-[NcName]\"); // 輸出檔案至: // Cache/Opt-file1.nc // Cache/Opt-file2.nc NC碼中的腳本指令 在註解內,以;@開頭,會在該行NC執行前執行腳本指令。 Tip FANUC NC檔範例,在換刀時更改仿真解析度 ... G40 G17 G49 G54 G80 G91 G28 Z0.0 T01 M06 (;@MachiningResolution_mm=0.03125;) S1270 M03 G43 Z10. H01 ..." + "summary": "腳本 任務(Task)頁面會依照順序執行腳本,頁面排版順序為由左至右,再由上至下。 腳本工具列 個別腳本的工具列的順序(Order)欄位為執行順序,如果沒有勾選啟用,則該任務會無視執行順序被略過。 工具欄可新增、刪除腳本。 語法與功能 腳本 (Script) 中的標題 (Title) 的功能僅為註記,無其他功能,腳本的內容與標題不一定要匹配。 腳本使用原生C#語言。 Note 基本 C# 語法 指令以分號 ; 作為結束符號。 可以使用 // 作為行尾註解。 可以使用double.PositiveInfinity、double.NegativeInfinity表示實數中的無限大及無限小。 腳本範例: PlayNcFile(\"NC/file1.nc\"); 多檔案輸出樣板 在有支援路徑樣板的指令中,路徑字串裡的[NcName]會被替換為NC檔案的名稱。 Tip 指令範例 PlayNcFile(\"NC/file1.nc\"); PlayNcFile(\"NC/file2.nc\"); WriteShotFiles(\"Output/[NcName].shot.csv\", 1); // 輸出檔案至: // Output/file1.nc.shot.csv // Output/file2.nc.shot.csv OptimizeToFiles(\"Cache/Opt-[NcName]\"); // 輸出檔案至: // Cache/Opt-file1.nc // Cache/Opt-file2.nc NC碼中的腳本指令 在註解內,以;@開頭,會在該行NC執行前執行腳本指令。 Tip FANUC NC檔範例,在換刀時更改仿真解析度 ... G40 G17 G49 G54 G80 G91 G28 Z0.0 T01 M06 (;@MachiningResolution_mm=0.03125;) S1270 M03 G43 Z10. H01 ..." }, "brief/user-guide/zh-Hant/script/FlyPiece/index.html": { "href": "brief/user-guide/zh-Hant/script/FlyPiece/index.html", @@ -5262,32 +5267,37 @@ "brief/user-guide/zh-Hant/script/Mapping/index.html": { "href": "brief/user-guide/zh-Hant/script/Mapping/index.html", "title": "資料映射 | HiAPI-C# 2025", - "summary": "資料映射 外部資料包含智慧刀把、動力計,可依時間線性映射至指定刀具路徑及加工區域。 映射資料可用於檢視加工狀態、訓練銑削係數、校正銑削係數。 所以資料映射需指定映射之兩部:指定輸入資料、指定NC路徑。 資料映射圖例 指定輸入資料 Note 指令格式 AddTimeDataByFile(<映射名>, <輸入檔案路徑>, <映射起點時間>, <映射終點時間>); <映射名>為自訂之標記名稱,對應於指定NC路徑中的映射名。 時間資料格式為<時>:<分>:<秒>.<小數點後秒>;其餘資料格式為實數。 注意映射資料不會因撥放器重置而被清空。可以使用ClearTimeMappingData指令清空。 Note 指令格式 ClearTimeMappingData(); Tip 指令範例 ClearTimeMappingData(); AddTimeDataByFile( \"lineA\", \"Mapping/sensor1.csv\", \"18:25:51.7100\", \"18:26:12.9910\"); AddTimeDataByFile( \"lineB\", \"Mapping/sensor1.csv\", \"18:26:30.5750\", \"18:27:12.2880\"); RunNcFile(\"NC/file1.nc\") 輸入檔案格式為csv,須包含時間資訊,其餘資訊可選擇包含或不包含。 csv檔案需有標題列,欄位標題需用特定指示詞標示。 部分欄位指示詞為方便性是多擇一。 時間: TimeTag Timetag Time t 動力計: X方向力: Fx Workpiece.Fx Y方向力: Fy Workpiece.Fy Z方向力: Fz Workpiece.Fz 智慧刀把: X方向力矩: Mx Spindle.Mx Y方向力矩: My Spindle.My Z方向力矩: Mz Spindle.Mz 加速規(可選): Ax Ay Az 欄位可以包含其他外部資訊,如下例之CH1、CH2。 Tip 檔案範例 TimeTag,CH1,CH2,Mx,My,Mz 18:23:54.703,-0.00398,-0.00034,-0.02923,0.10733,0.00409 18:23:54.704,-0.00194,0.00285,0.04155,-0.04457,0.00448 ... 指定NC路徑 Note 指令格式 //範圍(多行)資料映射 BeginSelection(<映射名>, <起點映射錨點旗標>, <起點偏置物件>); EndSelection(<映射名>, <終點映射錨點旗標>, <終點偏置物件>); //單行資料映射 LineSelection(<映射名>, <起點映射錨點旗標>, <起點偏置物件>, <終點映射錨點旗標>, <終點偏置物件>); <映射名>為自訂之標記名稱,對應於指定輸入資料中的映射名。 可以使用BeginSelection與EndSelection作範圍(多行)資料映射: BeginSelection設置映射起點。 EndSelection設置映射終點。 或是使用LineSelection作單行資料映射。 <映射錨點旗標>可以使用: LineBegin 以該行運動起點為映射錨點。 LineEnd 以該行運動終點為映射錨點。 FirstTouch 以該行第一次接觸工件的位置為映射錨點。 LastTouch 以該行最後接觸工件的位置為映射錨點。 <偏置物件>是相對於錨點的偏移,可以使用: null 無偏移。 ShiftTime_s 單位秒。正值為往後時間;負值為往前時間。 ShiftDistance_mm 單位mm。正值為往後位移;負值為往前位移。 指定NC路徑命令需在NC碼註解中執行,前置;@符號。 Tip NC檔案範例 ... G00 G90 X-6. Y10. G17 G01 Z-1. F600. S50 M03 X13. F20 ;@LineSelection(\"lineA\", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1)); X25. F10 ;@LineSelection(\"lineB\", FirstTouch, null, LastTouch, null); ... Tip NC檔案範例2 如果控制器不支援;符號作為註解,如FANUC控制器,則需將其引入註解範圍內。 ... G00 G90 X-6. Y10. G17 G01 Z-1. F600. S50 M03 X13. F20 (;@LineSelection(\"lineA\", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1));) X25. F10 (;@LineSelection(\"lineB\", FirstTouch, null, LastTouch, null);) ..." + "summary": "資料映射 外部資料包含智慧刀把、動力計,可依時間線性映射至指定刀具路徑及加工區域。 映射資料可用於檢視加工狀態、訓練銑削係數、校正銑削係數。 所以資料映射需指定映射之兩部:指定輸入資料、指定NC路徑。 資料映射圖例 指定輸入資料 Note 指令格式 AddTimeDataByFile(<映射名>, <輸入檔案路徑>, <映射起點時間>, <映射終點時間>); <映射名>為自訂之標記名稱,對應於指定NC路徑中的映射名。 時間資料格式為<時>:<分>:<秒>.<小數點後秒>;其餘資料格式為實數。 注意映射資料不會因撥放器重置而被清空。可以使用ClearTimeMappingData指令清空。 Note 指令格式 ClearTimeMappingData(); Tip 指令範例 ClearTimeMappingData(); AddTimeDataByFile( \"lineA\", \"Mapping/sensor1.csv\", \"18:25:51.7100\", \"18:26:12.9910\"); AddTimeDataByFile( \"lineB\", \"Mapping/sensor1.csv\", \"18:26:30.5750\", \"18:27:12.2880\"); PlayNcFile(\"NC/file1.nc\") 輸入檔案格式為csv,須包含時間資訊,其餘資訊可選擇包含或不包含。 csv檔案需有標題列,欄位標題需用特定指示詞標示。 部分欄位指示詞為方便性是多擇一。 時間: TimeTag Timetag Time t 動力計: X方向力: Fx Workpiece.Fx Y方向力: Fy Workpiece.Fy Z方向力: Fz Workpiece.Fz 智慧刀把: X方向力矩: Mx Spindle.Mx Y方向力矩: My Spindle.My Z方向力矩: Mz Spindle.Mz 加速規(可選): Ax Ay Az 欄位可以包含其他外部資訊,如下例之CH1、CH2。 Tip 檔案範例 TimeTag,CH1,CH2,Mx,My,Mz 18:23:54.703,-0.00398,-0.00034,-0.02923,0.10733,0.00409 18:23:54.704,-0.00194,0.00285,0.04155,-0.04457,0.00448 ... 指定NC路徑 Note 指令格式 //範圍(多行)資料映射 BeginSelection(<映射名>, <起點映射錨點旗標>, <起點偏置物件>); EndSelection(<映射名>, <終點映射錨點旗標>, <終點偏置物件>); //單行資料映射 LineSelection(<映射名>, <起點映射錨點旗標>, <起點偏置物件>, <終點映射錨點旗標>, <終點偏置物件>); <映射名>為自訂之標記名稱,對應於指定輸入資料中的映射名。 可以使用BeginSelection與EndSelection作範圍(多行)資料映射: BeginSelection設置映射起點。 EndSelection設置映射終點。 或是使用LineSelection作單行資料映射。 <映射錨點旗標>可以使用: LineBegin 以該行運動起點為映射錨點。 LineEnd 以該行運動終點為映射錨點。 FirstTouch 以該行第一次接觸工件的位置為映射錨點。 LastTouch 以該行最後接觸工件的位置為映射錨點。 <偏置物件>是相對於錨點的偏移,可以使用: null 無偏移。 ShiftTime_s 單位秒。正值為往後時間;負值為往前時間。 ShiftDistance_mm 單位mm。正值為往後位移;負值為往前位移。 指定NC路徑命令需在NC碼註解中執行,前置;@符號。 Tip NC檔案範例 ... G00 G90 X-6. Y10. G17 G01 Z-1. F600. S50 M03 X13. F20 ;@LineSelection(\"lineA\", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1)); X25. F10 ;@LineSelection(\"lineB\", FirstTouch, null, LastTouch, null); ... Tip NC檔案範例2 如果控制器不支援;符號作為註解,如FANUC控制器,則需將其引入註解範圍內。 ... G00 G90 X-6. Y10. G17 G01 Z-1. F600. S50 M03 X13. F20 (;@LineSelection(\"lineA\", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1));) X25. F10 (;@LineSelection(\"lineB\", FirstTouch, null, LastTouch, null);) ..." }, "brief/user-guide/zh-Hant/script/MillingTraining/index.html": { "href": "brief/user-guide/zh-Hant/script/MillingTraining/index.html", "title": "訓練與校正銑削係數 | HiAPI-C# 2025", - "summary": "訓練與校正銑削係數 銑削係數為計算銑削力的必須參數。 訓練與校正銑削係數需先完成資料映射。 TrainMillingPara訓練銑削係數,不需先設定工件銑削係數,輸出的新係數也與原工件銑削係數無關。 ReTrainMillingPara校正銑削係數,需基於已設定之工件銑削係數,才可輸出校正後係數。校正時原係數的權重10%、從資訊映射而得的樣本權重90%。 Note 指令格式 //訓練銑削係數 TrainMillingPara(<樣本旗標>, <檔案輸出路徑>); //校正銑削係數 ReTrainMillingPara(<樣本旗標>, <檔案輸出路徑>); <樣本旗標> 為應用於訓練資料的資料種類,包含:Fx、Fy、Fz、Mx、My、Mz。 使用|號作聯集。 Tip 以動力計資料為例,輸出訓練銑削係數 ClearTimeMappingData(); AddTimeDataByFile( \"lineA\", \"Mapping/sensor1.csv\", \"18:25:51.7100\", \"18:26:12.9910\"); AddTimeDataByFile( \"lineB\", \"Mapping/sensor1.csv\", \"18:26:30.5750\", \"18:27:12.2880\"); RunNcFile(\"NC/file1.nc\") TrainMillingPara(Fx|Fy|Fz, \"StainlessSteel.mp\"); Tip 以智慧刀把資料為例,輸出校正銑削係數 ClearTimeMappingData(); AddTimeDataByFile( \"lineA\", \"Mapping/sensor1.csv\", \"18:25:51.7100\", \"18:26:12.9910\"); AddTimeDataByFile( \"lineB\", \"Mapping/sensor1.csv\", \"18:26:30.5750\", \"18:27:12.2880\"); RunNcFile(\"NC/file1.nc\") ReTrainMillingPara(Fz|Mx|My|Mz, \"StainlessSteel.mp\"); 訓練條件 路徑樣本 以穩定資料訓練佳 ,即資料波形有重複性維持至少兩轉。因系統演算法最低以一轉波形做訓練。 在非穩定情況,會因為模擬中的每刃進給固定、訓練資料不穩定,造成剪切力於總力占比降低,使得訓練出的犁切係數偏高。 樣本穩定的情況下,NC路徑沒有限制切削形狀,槽銑或側銑,任意形狀刀具皆可用來訓練及校正銑削係數。 以TrainMillingPara訓練銑削係數,資訊映射須包含至少一組不同每刃進給的路徑樣本。訓練資料的資料種類建議最少為(動力計)Fx|Fy|Fz或(智慧刀把)Fz|Mx|My|Mz。 如果資料種類少於前述,如Fx|Fy或Mx|My|Mz,則樣本的自由度太高,訓練出來的係數不能符合訓練樣本以外的路徑。 如果僅使用Mx|My|Mz,由於力矩資料為 \\(\\vec{r} \\times \\vec{F}\\),所以r方向資料會遺失,相當於少了一個自由度,難以訓練材料系數。 所以力矩資料須搭配Fz使用。 以ReTrainMillingPara校正銑削係數,沒有限制資料種類及每刃進給。" + "summary": "訓練與校正銑削係數 銑削係數為計算銑削力的必須參數。 訓練與校正銑削係數需先完成資料映射。 TrainMillingPara訓練銑削係數,不需先設定工件銑削係數,輸出的新係數也與原工件銑削係數無關。 ReTrainMillingPara校正銑削係數,需基於已設定之工件銑削係數,才可輸出校正後係數。校正時原係數的權重10%、從資訊映射而得的樣本權重90%。 Note 指令格式 //訓練銑削係數 TrainMillingPara(<樣本旗標>, <檔案輸出路徑>); //校正銑削係數 ReTrainMillingPara(<樣本旗標>, <檔案輸出路徑>); <樣本旗標> 為應用於訓練資料的資料種類,包含:Fx、Fy、Fz、Mx、My、Mz。 使用|號作聯集。 Tip 以動力計資料為例,輸出訓練銑削係數 ClearTimeMappingData(); AddTimeDataByFile( \"lineA\", \"Mapping/sensor1.csv\", \"18:25:51.7100\", \"18:26:12.9910\"); AddTimeDataByFile( \"lineB\", \"Mapping/sensor1.csv\", \"18:26:30.5750\", \"18:27:12.2880\"); PlayNcFile(\"NC/file1.nc\") TrainMillingPara(Fx|Fy|Fz, \"StainlessSteel.mp\"); Tip 以智慧刀把資料為例,輸出校正銑削係數 ClearTimeMappingData(); AddTimeDataByFile( \"lineA\", \"Mapping/sensor1.csv\", \"18:25:51.7100\", \"18:26:12.9910\"); AddTimeDataByFile( \"lineB\", \"Mapping/sensor1.csv\", \"18:26:30.5750\", \"18:27:12.2880\"); PlayNcFile(\"NC/file1.nc\") ReTrainMillingPara(Fz|Mx|My|Mz, \"StainlessSteel.mp\"); 訓練條件 路徑樣本 以穩定資料訓練佳 ,即資料波形有重複性維持至少兩轉。因系統演算法最低以一轉波形做訓練。 在非穩定情況,會因為模擬中的每刃進給固定、訓練資料不穩定,造成剪切力於總力占比降低,使得訓練出的犁切係數偏高。 樣本穩定的情況下,NC路徑沒有限制切削形狀,槽銑或側銑,任意形狀刀具皆可用來訓練及校正銑削係數。 以TrainMillingPara訓練銑削係數,資訊映射須包含至少一組不同每刃進給的路徑樣本。訓練資料的資料種類建議最少為(動力計)Fx|Fy|Fz或(智慧刀把)Fz|Mx|My|Mz。 如果資料種類少於前述,如Fx|Fy或Mx|My|Mz,則樣本的自由度太高,訓練出來的係數不能符合訓練樣本以外的路徑。 如果僅使用Mx|My|Mz,由於力矩資料為 \\(\\vec{r} \\times \\vec{F}\\),所以r方向資料會遺失,相當於少了一個自由度,難以訓練材料系數。 所以力矩資料須搭配Fz使用。 以ReTrainMillingPara校正銑削係數,沒有限制資料種類及每刃進給。" }, "brief/user-guide/zh-Hant/script/NcOptimization/index.html": { "href": "brief/user-guide/zh-Hant/script/NcOptimization/index.html", "title": "NC優化 | HiAPI-C# 2025", - "summary": "NC優化 組態在NC仿真前設定,然後執行輸出優化NC檔指令。 組態 Note 指令格式 OptEnableFeedrate = <布林值>; OptEnableInterpolation = <布林值>; OptRapidFeed_mmdmin = <實數>; OptMinFeedrate_mmdmin = <實數>; OptMaxFeedrate_mmdmin = <實數>; OptMaxAcceleration_mmds2 = <實數>; OptExtendedPreDistance_mm = <實數>; OptExtendedPostDistance_mm = <實數>; OptSpindlePowerSafetyFactor = <實數>; OptEnableFeedrate:啟用順序式(Sequential)進給率優化。 順序式係指該功能從下指令開始作用。與其相對的設定在刀具端,刀具端也能設定進給率優化,但是在裝刀時才會發揮作用。 OptEnableFeedrate與所有其他啟用進給率優化的指令需同時為真,進給率優化才會啟用。 即與刀具設定端必須同時為真(true),進給率優化才會啟用。 OptEnableFeedrate預設值為真。 OptEnableInterpolation:優化程序用重新插補。 重新插捕後NC碼會增加,可以更好地控制加減速。 OptRapidFeed_mmdmin:優化程序中的無切削區域進給率。單位mm/min。 沒有切到工件的NC路徑,為無切削區域。優化後該路徑將採用無切削區域進給率。 OptMinFeedrate_mmdmin:優化程序中的有切削區域最小進給。單位mm/min。 OptMaxFeedrate_mmdmin:優化程序中的有切削區域最大進給。單位mm/min。 有切到工件的NC路徑,為有切削區域。有切削區域的最大最小進給的設定通常依據經驗法則。 OptMaxAcceleration_mmds2:優化程序中的加減速限制。優化後NC碼的F值變化在該限制之內。單位$mm/s^2$。 OptExtendedPreDistance_mm:優化程序中的有切削區域等效計算的前長度。單位mm。 OptExtendedPostDistance_mm:優化程序中的有切削區域等效計算的後長度。單位mm。 優化程序中的有切削區域等效計算的長度 OptSpindlePowerSafetyFactor:主軸功率安全係數。 OptSpindleTorqueSafetyFactor:主軸扭力安全係數。 優化後的NC碼,主軸功率及主軸扭力將被限制於安全係數之內。 OptPreferedForce_N:優化程中的目標力。單位N。 在符合所有限制的條件下,優化程序中的加工路徑產生的力會盡可能的趨近目標力。 NC碼中的優化腳本指令 於指定NC行不啟用優化 在執行 Preserve() 的NC行中,不啟用優化。 Tip 指令範例 在 N0140 行不啟用優化。 ... N0130 X-1.965 Y17.053 N0140 G03 X-2.66 Y38.193 I-103.796 J7.172 (;@Preserve();) N0150 G01 X-3.068 Y40.776 ... 於指定NC範圍不啟用優化 使用BeginPreserve()的NC行及EndPreserve()的NC行及包含的NC範圍,不啟用優化。 Tip 指令範例 在 N0140、N0150、N0160 行不啟用優化。 ... N0130 X-1.965 Y17.053 N0140 G03 X-2.66 Y38.193 I-103.796 J7.172 (;@BeginPreserve();) N0150 G01 X-3.068 Y40.776 N0160 X-3.555 Y43.338 (;@EndPreserve();) N0170 X-4.125 Y45.875 ... 輸出優化NC檔 Note 指令格式 OptimizeToFiles(<路徑樣板>); <路徑樣板>支援 檔案路徑樣板。 Tip 指令範例 OptEnableFeedrate = true; OptEnableInterpolation = true; OptRapidFeed_mmdmin = 4000; OptMinFeedrate_mmdmin = 100; OptMaxFeedrate_mmdmin = 4000; OptMaxAcceleration_mmds2 = 10; OptExtendedPreDistance_mm = 3; OptExtendedPostDistance_mm = 2; OptSpindlePowerSafetyFactor = 1.5; OptSpindleTorqueSafetyFactor = 1.5; OptPreferedForce_N = double.PositiveInfinity; RunNcFile(\"NC/file1.nc\"); OptRapidFeed_mmdmin = 8000; RunNcFile(\"NC/file2.nc\"); OptimizeToFiles(\"Cache/Opt-[NcName]\"); 組態設定可以穿插在NC仿真間,將會作用在組態設定後的NC仿真。 以上範例為例,優化後的NC程式file1.nc的無切削區域快速進給為4000,file2.nc則為8000。 Tip NC碼中的優化指令範例 ... N0110 X-3.064 Y6.378 (;@OptMaxAcceleration_mmds2=10;) N0120 X-2.411 Y11.712 N0130 X-1.965 Y17.053 N0140 G03 X-2.66 Y38.193 I-103.796 J7.172 (;@Preserve();) N0150 G01 X-3.068 Y40.776 (;@OptMaxAcceleration_mmds2=100; OptMaxFeedrate_mmdmin=12000;) N0160 X-3.555 Y43.338 N0170 X-4.125 Y45.875 ... N0110至N0150前,優化區加速度設為10 \\(mm/s^2\\); N0140單行不做優化; N0150及以後,優化區加速度設為100 \\(mm/s^2\\); N0150及以後,優化區切削區域最大進給設為12000 \\(mm/min\\); Tip 斷刀解決方案 更改加工路徑降低切寬深 或 以HiNC優化功能調整進給率,將降伏應力比、主軸最大扭矩比、主軸最大功率比降至100%以下。 Tip 熱崩刃解決方案 在解決斷刀問題的前提下,降低轉速,讓刀刃有充足時間散熱。 注意冷卻液是否對準刀刃影響甚大。" + "summary": "NC優化 組態在NC仿真前設定,然後執行輸出優化NC檔指令。 組態 Note 指令格式 OptEnableFeedrate = <布林值>; OptEnableInterpolation = <布林值>; OptRapidFeed_mmdmin = <實數>; OptMinFeedrate_mmdmin = <實數>; OptMaxFeedrate_mmdmin = <實數>; OptMaxAcceleration_mmds2 = <實數>; OptExtendedPreDistance_mm = <實數>; OptExtendedPostDistance_mm = <實數>; OptSpindlePowerSafetyFactor = <實數>; OptEnableFeedrate:啟用順序式(Sequential)進給率優化。 順序式係指該功能從下指令開始作用。與其相對的設定在刀具端,刀具端也能設定進給率優化,但是在裝刀時才會發揮作用。 OptEnableFeedrate與所有其他啟用進給率優化的指令需同時為真,進給率優化才會啟用。 即與刀具設定端必須同時為真(true),進給率優化才會啟用。 OptEnableFeedrate預設值為真。 OptEnableInterpolation:優化程序用重新插補。 重新插捕後NC碼會增加,可以更好地控制加減速。 OptRapidFeed_mmdmin:優化程序中的無切削區域進給率。單位mm/min。 沒有切到工件的NC路徑,為無切削區域。優化後該路徑將採用無切削區域進給率。 OptMinFeedrate_mmdmin:優化程序中的有切削區域最小進給。單位mm/min。 OptMaxFeedrate_mmdmin:優化程序中的有切削區域最大進給。單位mm/min。 有切到工件的NC路徑,為有切削區域。有切削區域的最大最小進給的設定通常依據經驗法則。 OptMaxAcceleration_mmds2:優化程序中的加減速限制。優化後NC碼的F值變化在該限制之內。單位$mm/s^2$。 OptExtendedPreDistance_mm:優化程序中的有切削區域等效計算的前長度。單位mm。 OptExtendedPostDistance_mm:優化程序中的有切削區域等效計算的後長度。單位mm。 優化程序中的有切削區域等效計算的長度 OptSpindlePowerSafetyFactor:主軸功率安全係數。 OptSpindleTorqueSafetyFactor:主軸扭力安全係數。 優化後的NC碼,主軸功率及主軸扭力將被限制於安全係數之內。 OptPreferedForce_N:優化程中的目標力。單位N。 在符合所有限制的條件下,優化程序中的加工路徑產生的力會盡可能的趨近目標力。 NC碼中的優化腳本指令 於指定NC行不啟用優化 在執行 Preserve() 的NC行中,不啟用優化。 Tip 指令範例 在 N0140 行不啟用優化。 ... N0130 X-1.965 Y17.053 N0140 G03 X-2.66 Y38.193 I-103.796 J7.172 (;@Preserve();) N0150 G01 X-3.068 Y40.776 ... 於指定NC範圍不啟用優化 使用BeginPreserve()的NC行及EndPreserve()的NC行及包含的NC範圍,不啟用優化。 Tip 指令範例 在 N0140、N0150、N0160 行不啟用優化。 ... N0130 X-1.965 Y17.053 N0140 G03 X-2.66 Y38.193 I-103.796 J7.172 (;@BeginPreserve();) N0150 G01 X-3.068 Y40.776 N0160 X-3.555 Y43.338 (;@EndPreserve();) N0170 X-4.125 Y45.875 ... 輸出優化NC檔 Note 指令格式 OptimizeToFiles(<路徑樣板>); <路徑樣板>支援 檔案路徑樣板。 Tip 指令範例 OptEnableFeedrate = true; OptEnableInterpolation = true; OptRapidFeed_mmdmin = 4000; OptMinFeedrate_mmdmin = 100; OptMaxFeedrate_mmdmin = 4000; OptMaxAcceleration_mmds2 = 10; OptExtendedPreDistance_mm = 3; OptExtendedPostDistance_mm = 2; OptSpindlePowerSafetyFactor = 1.5; OptSpindleTorqueSafetyFactor = 1.5; OptPreferedForce_N = double.PositiveInfinity; PlayNcFile(\"NC/file1.nc\"); OptRapidFeed_mmdmin = 8000; PlayNcFile(\"NC/file2.nc\"); OptimizeToFiles(\"Cache/Opt-[NcName]\"); 組態設定可以穿插在NC仿真間,將會作用在組態設定後的NC仿真。 以上範例為例,優化後的NC程式file1.nc的無切削區域快速進給為4000,file2.nc則為8000。 Tip NC碼中的優化指令範例 ... N0110 X-3.064 Y6.378 (;@OptMaxAcceleration_mmds2=10;) N0120 X-2.411 Y11.712 N0130 X-1.965 Y17.053 N0140 G03 X-2.66 Y38.193 I-103.796 J7.172 (;@Preserve();) N0150 G01 X-3.068 Y40.776 (;@OptMaxAcceleration_mmds2=100; OptMaxFeedrate_mmdmin=12000;) N0160 X-3.555 Y43.338 N0170 X-4.125 Y45.875 ... N0110至N0150前,優化區加速度設為10 \\(mm/s^2\\); N0140單行不做優化; N0150及以後,優化區加速度設為100 \\(mm/s^2\\); N0150及以後,優化區切削區域最大進給設為12000 \\(mm/min\\); Tip 斷刀解決方案 更改加工路徑降低切寬深 或 以HiNC優化功能調整進給率,將降伏應力比、主軸最大扭矩比、主軸最大功率比降至100%以下。 Tip 熱崩刃解決方案 在解決斷刀問題的前提下,降低轉速,讓刀刃有充足時間散熱。 注意冷卻液是否對準刀刃影響甚大。" + }, + "brief/user-guide/zh-Hant/script/PlayCsvFile/play-csv-file.html": { + "href": "brief/user-guide/zh-Hant/script/PlayCsvFile/play-csv-file.html", + "title": "執行CSV檔 | HiAPI-C# 2025", + "summary": "執行CSV檔 以CSV格式檔案驅動仿真。 執行NC檔指令為 PlayCsvFile ,<檔案路徑> 的根目錄為專案目錄。 Note 指令格式 PlayCsvFile(<檔案路徑>); Tip 指令範例 PlayCsvFile(\"Data/file1.csv\"); Tip 本撥放器可直接讀取匯出之檔案。 檔案格式 驅動的CSV檔案為逗號分隔,第一列須為標頭列。其餘每列為一步。標頭大小寫不同,會被視為不同資料。 驅動欄位 依預設設定,關鍵的 CSV 欄位標題如下。這些欄位的資料會驅動模擬。 MC.X, MC.Y, MC.Z, MC.A, MC.B, MC.C, ToolId, SpindleSpeed, Feedrate_mmdmin, StepDuration 這些欄位標題可以在 .hincproj 的 CsvRunnerConfig 中更改。 自訂欄位 其他資料如感測器、事後分析資料等也可放入CSV檔中,系統支援該資料的工件顏色梯度圖、時間序列圖、點選追蹤功能。 Tip 本範例檔案為可驅動系統的CSV檔案。" + }, + "brief/user-guide/zh-Hant/script/PlayNcFile/index.html": { + "href": "brief/user-guide/zh-Hant/script/PlayNcFile/index.html", + "title": "執行NC檔 | HiAPI-C# 2025", + "summary": "執行NC檔 執行NC檔指令為 PlayNcFile ,<檔案路徑> 的根目錄為專案目錄。 Note 指令格式 PlayNcFile(<檔案路徑>); Tip 指令範例 PlayNcFile(\"NC/file1.nc\");" }, "brief/user-guide/zh-Hant/script/Resolution/index.html": { "href": "brief/user-guide/zh-Hant/script/Resolution/index.html", "title": "仿真解析度 | HiAPI-C# 2025", "summary": "仿真解析度 仿真解析度可分為程序幾何的實體解析度、程序幾何的顯示解析度、加工運動解析度。 程序幾何實體解析度 Note 指令格式 MachiningResolution_mm = <實數>; Tip 指令範例 MachiningResolution_mm = 0.125; 工件網格由正立方體組成,工件實體解析度為最小工件網格立方體的寬度。 網格立方體的寬度僅能為2的指數,包含 ..., 4, 2, 1, 0.5, 0.25, 0.125, ... 。如果設置的值不是2的指數,則系統會將其調整為2的指數。 工件實體解析度越高,切削時計算量越大、仿真速度越慢。 工件實體解析度每增加一倍,需要至多8倍的材料移除演算時間與RAM記憶體空間。 工件顯示暫存組態 Note 指令格式 DispCache_Mb = <實數(Mb)>; Tip 指令範例 DispCache_Mb = 260; 工件網格的顯示解析度由暫存空間的大小決定。 顯示網格是基於實體網格,所以顯示網格不會小於實體網格。 數值設置越大,顯示延遲越長,建議數值不超過1000Mb。 加工運動解析度 加工運動解析度(Machining Motion Resolution)決定仿真的每步間隔。 有以下項目可選擇,預設值為每刃進給。 每轉進給(Feed Per Cycle) 一步為主軸一轉。 每刃進給(Feed Per Tooth) 一步為刀刃一轉。 固定解析度(Fixed Resolution) 固定解析度在仿真時採用掃掠,兩步間沒有殘丘。 其中線性解析度(Linear Resolution)為兩步間最大直線距離;旋轉解析度(Rotary Resolution)為兩步間最大旋轉角度。 Note 指令格式 MachiningMotionResolution = <運動解析度物件>; MachiningMotionResolution = FeedPerCycle; MachiningMotionResolution = FeedPerTooth; MachiningMotionResolution = FixedPace(<線性解析度(mm)>, <旋轉解析度(deg)>); Tip 指令範例 MachiningMotionResolution = FeedPerCycle; MachiningMotionResolution = FixedPace(1, 15); 仿真效率 物理仿真採用平行處理,在大部分情況下不影響仿真速度,持續的高解析度大面積切削會出現暫時卡頓。 與市面其他仿真軟件不同,HiNC的仿真使用體模型,刀具與工件接觸範圍越小,仿真速度越快。 五軸切削仿真的速度會快於大面銑刀的仿真速度。" }, - "brief/user-guide/zh-Hant/script/RunNcFile/index.html": { - "href": "brief/user-guide/zh-Hant/script/RunNcFile/index.html", - "title": "執行NC檔 | HiAPI-C# 2025", - "summary": "執行NC檔 執行NC檔指令為 RunNcFile ,<檔案路徑> 的根目錄為專案目錄。 Note 指令格式 RunNcFile(<檔案路徑>); Tip 指令範例 RunNcFile(\"NC/file1.nc\");" - }, "brief/user-guide/zh-Hant/script/RuntimeGeom/index.html": { "href": "brief/user-guide/zh-Hant/script/RuntimeGeom/index.html", "title": "程序幾何 | HiAPI-C# 2025", - "summary": "程序幾何 程序幾何(RuntimeGeom)是工件幾何在HiNC仿真運作期間的資料格式,由大小不一的正立方線架構網格組成。 程序幾何外觀 程序幾何的正立方線架構網格 讀寫程序幾何 ReadRuntimeGeom、WriteRuntimeGeom可以讀寫程序幾何至檔案。 WriteRuntimeGeomToStl可以將程序幾何轉換為STL並寫入檔案。 Note 指令格式 WriteRuntimeGeom(<檔案路徑>); ReadRuntimeGeom(<檔案路徑>); WriteRuntimeGeomToStl(<檔案路徑>, <解析度(mm)> = 0); <檔案路徑> 的根目錄為專案目錄。 <解析度> 輸出STL時依據的最小工件網格立方體寬度。 該寬度不小於實體解析度。若設定本參數小於實體解析度,則等同於設定為實體解析度。 預設值為0,意同採用實體解析度。 解析度越大,則檔案生成速度越快、佔用記憶體空間越小。 Tip 指令範例 ReadRuntimeGeom(\"Cache/init.wct\"); RunNcFile(\"NC/file1.nc\"); WriteRuntimeGeom(\"Cache/file1.wct\"); WriteRuntimeGeomToStl(\"Output/file1.stl\"); 在仿真開始時,會將幾何模型轉換為程序幾何,轉換時間會依照初始解析度及幾何複雜度有所不同。 如果工件模型會重複使用且轉換時間很長,可以在腳本執行NC指令前搭配使用ReadRuntimeGeom、WriteRuntimeGeom,節省等待時間。" + "summary": "程序幾何 程序幾何(RuntimeGeom)是工件幾何在HiNC仿真運作期間的資料格式,由大小不一的正立方線架構網格組成。 程序幾何外觀 程序幾何的正立方線架構網格 讀寫程序幾何 ReadRuntimeGeom、WriteRuntimeGeom可以讀寫程序幾何至檔案。 WriteRuntimeGeomToStl可以將程序幾何轉換為STL並寫入檔案。 Note 指令格式 WriteRuntimeGeom(<檔案路徑>); ReadRuntimeGeom(<檔案路徑>); WriteRuntimeGeomToStl(<檔案路徑>, <解析度(mm)> = 0); <檔案路徑> 的根目錄為專案目錄。 <解析度> 輸出STL時依據的最小工件網格立方體寬度。 該寬度不小於實體解析度。若設定本參數小於實體解析度,則等同於設定為實體解析度。 預設值為0,意同採用實體解析度。 解析度越大,則檔案生成速度越快、佔用記憶體空間越小。 Tip 指令範例 ReadRuntimeGeom(\"Cache/init.wct\"); PlayNcFile(\"NC/file1.nc\"); WriteRuntimeGeom(\"Cache/file1.wct\"); WriteRuntimeGeomToStl(\"Output/file1.stl\"); 在仿真開始時,會將幾何模型轉換為程序幾何,轉換時間會依照初始解析度及幾何複雜度有所不同。 如果工件模型會重複使用且轉換時間很長,可以在腳本執行NC指令前搭配使用ReadRuntimeGeom、WriteRuntimeGeom,節省等待時間。" }, "brief/user-guide/zh-Hant/script/WriteShotFiles/index.html": { "href": "brief/user-guide/zh-Hant/script/WriteShotFiles/index.html", diff --git a/App/wwwroot/HiAPI-docsite/manifest.json b/App/wwwroot/HiAPI-docsite/manifest.json index cbdcb40..6131261 100644 --- a/App/wwwroot/HiAPI-docsite/manifest.json +++ b/App/wwwroot/HiAPI-docsite/manifest.json @@ -13797,6 +13797,16 @@ }, "version": "" }, + { + "type": "Conceptual", + "source_relative_path": "brief/dev-doc/hinc-web-service/disp-web-service.md", + "output": { + ".html": { + "relative_path": "brief/dev-doc/hinc-web-service/disp-web-service.html" + } + }, + "version": "" + }, { "type": "Conceptual", "source_relative_path": "brief/dev-doc/index.md", @@ -14637,20 +14647,30 @@ }, { "type": "Conceptual", - "source_relative_path": "brief/user-guide/zh-Hant/script/Resolution/index.md", + "source_relative_path": "brief/user-guide/zh-Hant/script/PlayCsvFile/play-csv-file.md", "output": { ".html": { - "relative_path": "brief/user-guide/zh-Hant/script/Resolution/index.html" + "relative_path": "brief/user-guide/zh-Hant/script/PlayCsvFile/play-csv-file.html" } }, "version": "" }, { "type": "Conceptual", - "source_relative_path": "brief/user-guide/zh-Hant/script/RunNcFile/index.md", + "source_relative_path": "brief/user-guide/zh-Hant/script/PlayNcFile/index.md", "output": { ".html": { - "relative_path": "brief/user-guide/zh-Hant/script/RunNcFile/index.html" + "relative_path": "brief/user-guide/zh-Hant/script/PlayNcFile/index.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "brief/user-guide/zh-Hant/script/Resolution/index.md", + "output": { + ".html": { + "relative_path": "brief/user-guide/zh-Hant/script/Resolution/index.html" } }, "version": "" diff --git a/App/wwwroot/HiAPI-docsite/temp-Doc/toc.json b/App/wwwroot/HiAPI-docsite/temp-Doc/toc.json index b9a8730..9bc789f 100644 --- a/App/wwwroot/HiAPI-docsite/temp-Doc/toc.json +++ b/App/wwwroot/HiAPI-docsite/temp-Doc/toc.json @@ -35,7 +35,7 @@ "Cmd-Resolution", "Cmd-RuntimeGeom", "Cmd-Collision", - "Cmd-RunNcFile", + "Cmd-PlayNcFile", "Cmd-RemoveFlyPiece", "Cmd-NcOptimization", "Cmd-WriteShotFiles", diff --git a/App/zh-Hans/HiMech.resources.dll b/App/zh-Hans/HiMech.resources.dll index a5f3e03ec22043441a92e7be06171f3eb285c006..bcb2114f75e9f693e9c790707d74c789325c3585 100644 GIT binary patch delta 230 zcmZq3Xvmn*!7|A!^328_CuT;S&F7gFnFM6z_utnnzu>gqb8(5qQkRNNY?+J}CVB=8 z3?_^W`o?;OdL|~?=B6p;=E+Hxmgc6(DTW5A$>zou#;M5$7M6y_iAl!BW)>-yW+|3N zn-{XbRpHcOU}RusU|`VMJYDBG6QjxIdi{FFU=s#y26F~eh7=%a&XCNI#9#@8AdzIC zm?47!Ln@GE&S1=70mLA-0gz=0lrd&V1gbU$LNlO93Q)`pOd3rNG&E&3VbEhRm@KGW KwwclBKO+F~0X2vK delta 230 zcmXAfF-}537=&keBGF1uKuGMCJeHleFH2~Q1u-EZF?xYzc?2(DXP~s8Afcc$;Rw2C zu(tIEuQIlD`V))!XXg87wOB1SFDHlkVg0tg$&^l?S*LMP566@CVSoKPy8Ze3IDdXW zeN>*g0Sbj4^L}1X2NP(cr>o|r@eGzFD_^=Pqlt!t!r3sBoA#~mt1}IS41i9%ZrxB! z%idDm6B+?VL|8<4afb?XltPa!2&Xg(_2Ldw$x*&X5d##$tn6n0d3)D)O(KWcUh1c$ H?63L*;iWcE diff --git a/App/zh-Hans/HiNc.resources.dll b/App/zh-Hans/HiNc.resources.dll index 714aa9f60d16a60cd8aff3a69b3d5169e5e03af8..f6daae0c0fc7b4e85c3ce2721ba49edaca225a43 100644 GIT binary patch delta 228 zcmWNIv1$TA6h-gLYS0j2ty2YTMA*!{ncbc3B!6IGYcady4_KxV(pXpoB#~lQ+kMivAS94|Z0}x) zI6mC3XvUbJK!ApVMFk`0&`8oqzLYE%Rw6G=0E@i*)v{o5O4y2bLK-FN-DOaA85vX@ KroR*^{iA=R&onOp delta 228 zcmWlPJx;?w6olttf&>bZQ`4r43|!+L!%kJH{Wc=oAKlQ>GNvw{_?Oa$mEY=bW%opvtPuoa|1#Fz~rZkTO!U^ z!!@lK6IigwV~zkV4ychtjG0_fh=-9jp+zSPCFz9xe~d@~ diff --git a/App/zh-Hant/HiGeom.resources.dll b/App/zh-Hant/HiGeom.resources.dll index eec89dfa9e4887c1d0c473e551dfebb16903566e..7bc7b4b2b57534c327dcb0692679099b183f2b8c 100644 GIT binary patch delta 231 zcmZorX;7Ka!7_`TWzEJOCuT;K&F7gVnFK7B9OKnHDCD_MduR5Ze`oS1|6u)VVWwxm zz+l42pl_^asAp`ZZE9qgWMr6PX<%S!X_=a2U}~P4WR_^2oMvH>Y@TMCXl|NlVPI*I zx>=V!k(pD4fsuikfq_9~^K>p@CPuT(t9j}fgUuMU8B7_B7z`Pbz+?)8C4&JFT7qFJ zP}Be@Z_WT>nK2{+S;-7(3>H9`3}mMPcmcOm+v1J$DdEDpZ;%< zf&ex+n-s2?$e5ZovM(!f(MeNQA+mJdSKM}UR}+5S6L7wO zFCct_1r?uQ@L_K5&B=MMn{~6*>qYUr_}skRCnAfx%hhyCuTE1~y*| KzbMoBAN>Qz#x|S) delta 228 zcmWlPJxT;Y5QSek{vewyq9BNY7%q%m-PJw2>Fx;(JU~y+^aTt}7B>+Q5mpe)&6P&b zQwVzjGXwDsTJm_0s`tIQ%;oNC{q{RPzT8YJa^<6XT^s(K`EW72oISrEUmvcXrpx=y zw}xv22;s!lTzeh~bDSibQplOdp^MR_-1gS=KD0eI$s6gcl*QIyu1Hn9Kz