<html>
<head>
<!-- Tocas UI：CSS 與元件 -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tocas-ui/2.3.3/tocas.css">
<!-- Tocas JS：模塊與 JavaScript 函式 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/tocas-ui/2.3.3/tocas.js"></script>
</head>
<body>
<br><br>
	<div class="ts container">
		<div class="ts segment">
		<div class="ts header">
				Remote Cloud Slicer
				<div class="sub header">Powered by Cura</div>
			</div>
		</div>
		<div class="ts segment">
			<p>This is a background services that perform remote slicing on Cloud (aka other people's computer). This system is not designed for user directly slicing with any given UI.<br><br>
			To use this services, you need to build yourself a client that provide GUI for the user in order to start the slicing process. An example can be find in <a href="ui.html">ui.html</a></p>
			<p>這是一個用作遠端切片的背景程序，並設計來運作在雲端上（即是別人的電腦嘛）。
			這並不是一個用家可以直接互動的系統。如果你想使用這個服務，請你先寫好一個用作提供使用者界面的前端，並使用 API 要求這邊的服務進行切片。你可以看看<a href="ui.html">這個例子</a>。</p>
		</div>
		<details class="ts accordion">
		<summary>
			<i class="dropdown icon"></i> I am a developer, show me everything
		</summary>
		<div class="content">
			<p>Hi developer, sorry this might be a bad news for you, this system is glue together with php and javascript. The good news is, I am here to provide you the best explaination of what is happening in this system.</p>
			<p>If you need a simple example, please take a look at the ui.html. Although the UI is in Chinese, but the comments are in English.<br>
			In simple words, this is what happens:
			<br></p>
			<h3>Operation Procedures</h3><p>
			1. User upload an stl to the server (with upload.php), the server return a storage filename which can be hashed or timestamp (In this implementation, timestamp is used, the file will be stored in ./input)<br>
			2. The given filename is stored by Javascript to browser RAM and request the stl viewer to get the stl file for preview.<br>
			3. Afther the user confirm their upload file is correct, the javascript then call another script (slice.php) to slice the stl model and return the filename for the gcode file (which, located under ./output)<br>
			4. Next, you can do whatever you want with the given gcode files.(Like sending it a Raspberry Pi / ESP32 etc)
			<br><br>
			</p>
			<h3>Cura Engine Dummy</h3>
			<p>
			Cura Engine Dummy is a VB.net written script that helps you "steal" the command that sent from Cura UI to Cura Engine. This is how its works.<br>
			Under normal situation, Cura UI will send the slicing commands to CuraEngine for slicing when you press "prepare" (or update anything in older versions of cura). As the command is too long and not human readable, this exe file (which, you can find under ./CuraEngine Dummy/bin/Debug/CuraEngine Dummy.exe) is used to replace the original CuraEngine.exe and output all the paramter it gets to a txt file.<br>
			To use this file, follow the steps below:<br>
			1. Go to the root of your Cura Slicer Software <br>
			2. Find CuraEngine.exe, rename it as "CuraEngineReal.exe"<br>
			3. Copy the "CuraEngine Dummy.exe" into the same directory where the real CuraEngine is located <br>
			4. Rename "CuraEngine Dummy.exe" to "CuraEngine"<br>
			5. Open CuraUI with a random file, adjust the profile so that it fits most of your print well / choose the one that you use most <br>
			6. Press "Prepare", the Cura UI should crash and closed by itself. The CuraEngine.exe (Dummy) should export a txt file full of input variables.<br>
			7. Strip out all the newlines and put the rest of the content into ./template/default.txt<br>
			8. Replace the input and output filename from the commands to "{outputfilename}" -em0 -l "{inputfilename}" <br>
			</p>
		</div>
	</details>
		<br>
		Developed by IMUS Laboratory under Project "Remote Cloud Slicing System". Please refer to the License file for license information.
		<br>
	<br>
	<br>
	</div>	
</body>
</html>