<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>PolyScript</title>
    <link>https://polyscript.objhub.org/ja/</link>
    <description>Recent content on PolyScript</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <atom:link href="https://polyscript.objhub.org/ja/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>はじめに</title>
      <link>https://polyscript.objhub.org/ja/getting-started/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://polyscript.objhub.org/ja/getting-started/</guid>
      <description>&lt;h2 id=&#34;polyscriptを試す&#34;&gt;PolyScriptを試す&lt;/h2&gt;&#xA;&lt;p&gt;ブラウザで今すぐ試せます。以下のPlaygroundを開いて、コードを入力してみましょう。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://live.objhub.org&#34;&gt;PolyScript Playground&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;コードを書くと、右側に3Dモデルがリアルタイムで表示されます。&#xA;このページの例をコピーして貼り付けるだけで始められます。&lt;/p&gt;&#xA;&lt;h2 id=&#34;polyscriptとは&#34;&gt;PolyScriptとは&lt;/h2&gt;&#xA;&lt;p&gt;PolyScriptは、パラメトリック3Dモデルを簡潔に書くためのCAD DSLです。&#xA;基本の考え方はシンプルで、プリミティブを作り、&lt;code&gt;|&lt;/code&gt; で操作をつなぎ、必要な箇所だけ選択して加工します。&lt;/p&gt;&#xA;&lt;div class=&#34;ps-code-block highlight&#34;&gt;&#xA;  &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-poly&#34; data-lang=&#34;poly&#34;&gt;box 80 60 10 | fillet 2 | diff cylinder 10 10&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;div class=&#34;ps-btn-group&#34;&gt;&#xA;    &lt;button class=&#34;ps-preview-btn&#34; data-code=&#34;Ym94IDgwIDYwIDEwIHwgZmlsbGV0IDIgfCBkaWZmIGN5bGluZGVyIDEwIDEw&#34;&gt;&amp;#x25B6; Preview&lt;/button&gt;&#xA;    &lt;a class=&#34;ps-edit-btn&#34; data-code=&#34;Ym94IDgwIDYwIDEwIHwgZmlsbGV0IDIgfCBkaWZmIGN5bGluZGVyIDEwIDEw&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;#x270E; Edit&lt;/a&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;この1行は、次の意味になります。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;box 80 60 10&lt;/code&gt; で箱を作る&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;| fillet 2&lt;/code&gt; で角を丸める&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;| diff cylinder 10 10&lt;/code&gt; で円柱の形をくり抜く&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;PolyScriptの特徴は次の3点です。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;よく使うCAD操作を短く（カッコなしで）書ける&lt;/li&gt;&#xA;&lt;li&gt;操作の流れが &lt;code&gt;|&lt;/code&gt; で左から右へ読める&lt;/li&gt;&#xA;&lt;li&gt;宣言的なDSLとして、安全に実行しやすい&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;単位について&lt;/strong&gt;: PolyScriptの数値に固定の単位はありません。3Dプリンティングではmmとして扱うのが慣例です。&lt;code&gt;box 80 60 10&lt;/code&gt; は 80mm × 60mm × 10mm のつもりで書くとよいでしょう。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;最初に覚える考え方&#34;&gt;最初に覚える考え方&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-形はプリミティブから始まる&#34;&gt;1. 形はプリミティブから始まる&lt;/h3&gt;&#xA;&lt;p&gt;3Dモデルは基本の形（&lt;strong&gt;プリミティブ&lt;/strong&gt;と呼びます）から始めます。立体なら &lt;code&gt;box&lt;/code&gt;（箱）、&lt;code&gt;cylinder&lt;/code&gt;（円柱）、&lt;code&gt;sphere&lt;/code&gt;（球）、平面なら &lt;code&gt;rect&lt;/code&gt;（四角）、&lt;code&gt;circle&lt;/code&gt;（円）などがあります。引数はスペースで区切って並べます。&lt;/p&gt;&#xA;&lt;div class=&#34;ps-code-block highlight&#34;&gt;&#xA;  &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-poly&#34; data-lang=&#34;poly&#34;&gt;box 40 30 10&#xA;cylinder 5 10 at:(40, 0, 0)&#xA;cone 10 0 20 at:(70, 0, 0)        # 完全な円錐（上面半径0）&#xA;torus 20 5 at:(120, 0, 0)         # ドーナツ形状&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;div class=&#34;ps-btn-group&#34;&gt;&#xA;    &lt;button class=&#34;ps-preview-btn&#34; data-code=&#34;Ym94IDQwIDMwIDEwCmN5bGluZGVyIDUgMTAgYXQ6KDQwLCAwLCAwKQpjb25lIDEwIDAgMjAgYXQ6KDcwLCAwLCAwKSAgICAgICAgIyDlrozlhajjgarlhobpjJDvvIjkuIrpnaLljYrlvoQw77yJCnRvcnVzIDIwIDUgYXQ6KDEyMCwgMCwgMCkgICAgICAgICAjIOODieODvOODiuODhOW9oueKtg==&#34;&gt;&amp;#x25B6; Preview&lt;/button&gt;&#xA;    &lt;a class=&#34;ps-edit-btn&#34; data-code=&#34;Ym94IDQwIDMwIDEwCmN5bGluZGVyIDUgMTAgYXQ6KDQwLCAwLCAwKQpjb25lIDEwIDAgMjAgYXQ6KDcwLCAwLCAwKSAgICAgICAgIyDlrozlhajjgarlhobpjJDvvIjkuIrpnaLljYrlvoQw77yJCnRvcnVzIDIwIDUgYXQ6KDEyMCwgMCwgMCkgICAgICAgICAjIOODieODvOODiuODhOW9oueKtg==&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;#x270E; Edit&lt;/a&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;at:(x, y, z)&lt;/code&gt; で配置位置を指定できます。省略すると原点に置かれるため、複数のプリミティブを並べて見せるときは上の例のようにずらして配置してください。&lt;/p&gt;</description>
    </item>
    <item>
      <title>チュートリアル</title>
      <link>https://polyscript.objhub.org/ja/tutorial/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://polyscript.objhub.org/ja/tutorial/</guid>
      <description>&lt;p&gt;「入門」で基本は掴めた。ここからは実際に手を動かして、モデルを完成させよう。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;lesson-1-ケース箱型カバーを作る&#34;&gt;Lesson 1: ケース（箱型カバー）を作る&lt;/h2&gt;&#xA;&lt;p&gt;電子基板を入れるケースを作る。CADモデリングの黄金パターン「作る → 選ぶ → 加工する」を体で覚えよう。&lt;/p&gt;&#xA;&lt;h3 id=&#34;完成形&#34;&gt;完成形&lt;/h3&gt;&#xA;&lt;div class=&#34;ps-code-block highlight&#34;&gt;&#xA;  &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-poly&#34; data-lang=&#34;poly&#34;&gt;box 100 60 40&#xA; | faces &amp;gt;Z | shell 2&#xA; | edges =Z | fillet 3&#xA; | edges &amp;lt;Z | fillet 1&#xA; | faces right&#xA; | circle 4 | cut&#xA; | faces left&#xA; | points (grid 2 4 10)&#xA; | hole 3&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;div class=&#34;ps-btn-group&#34;&gt;&#xA;    &lt;button class=&#34;ps-preview-btn&#34; data-code=&#34;Ym94IDEwMCA2MCA0MAogfCBmYWNlcyA&amp;#43;WiB8IHNoZWxsIDIKIHwgZWRnZXMgPVogfCBmaWxsZXQgMwogfCBlZGdlcyA8WiB8IGZpbGxldCAxCiB8IGZhY2VzIHJpZ2h0CiB8IGNpcmNsZSA0IHwgY3V0CiB8IGZhY2VzIGxlZnQKIHwgcG9pbnRzIChncmlkIDIgNCAxMCkKIHwgaG9sZSAz&#34;&gt;&amp;#x25B6; Preview&lt;/button&gt;&#xA;    &lt;a class=&#34;ps-edit-btn&#34; data-code=&#34;Ym94IDEwMCA2MCA0MAogfCBmYWNlcyA&amp;#43;WiB8IHNoZWxsIDIKIHwgZWRnZXMgPVogfCBmaWxsZXQgMwogfCBlZGdlcyA8WiB8IGZpbGxldCAxCiB8IGZhY2VzIHJpZ2h0CiB8IGNpcmNsZSA0IHwgY3V0CiB8IGZhY2VzIGxlZnQKIHwgcG9pbnRzIChncmlkIDIgNCAxMCkKIHwgaG9sZSAz&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;#x270E; Edit&lt;/a&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;いきなり全部は見なくていい。1ステップずつ積み上げよう。&lt;/p&gt;&#xA;&lt;h3 id=&#34;step-1-箱を作って中空にする&#34;&gt;Step 1: 箱を作って中空にする&lt;/h3&gt;&#xA;&lt;div class=&#34;ps-code-block highlight&#34;&gt;&#xA;  &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-poly&#34; data-lang=&#34;poly&#34;&gt;box 100 60 40&#xA; | faces &amp;gt;Z | shell 2&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;div class=&#34;ps-btn-group&#34;&gt;&#xA;    &lt;button class=&#34;ps-preview-btn&#34; data-code=&#34;Ym94IDEwMCA2MCA0MAogfCBmYWNlcyA&amp;#43;WiB8IHNoZWxsIDI=&#34;&gt;&amp;#x25B6; Preview&lt;/button&gt;&#xA;    &lt;a class=&#34;ps-edit-btn&#34; data-code=&#34;Ym94IDEwMCA2MCA0MAogfCBmYWNlcyA&amp;#43;WiB8IHNoZWxsIDI=&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&amp;#x270E; Edit&lt;/a&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;code&gt;faces &amp;gt;Z&lt;/code&gt; で上面を選択し、&lt;code&gt;shell 2&lt;/code&gt; で肉厚2mmの中空体に。選択した面が取り除かれてフタなしになる。&lt;/p&gt;</description>
    </item>
    <item>
      <title>構文リファレンス</title>
      <link>https://polyscript.objhub.org/ja/language/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://polyscript.objhub.org/ja/language/</guid>
      <description>&lt;h2 id=&#34;概要&#34;&gt;概要&lt;/h2&gt;&#xA;&lt;p&gt;PolyScriptはパイプベースのパラメトリックCADモデリング言語です。プリミティブで形状を作り、パイプ操作のチェーンで変形します。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;box 80 60 10 | fillet 2 | diff cylinder 10 10&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;複数の形状を続けて書くと、自動的に1つの形状に結合（union）されます。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;box 10 10 10&#xA;sphere 8&#xA;# → 2つの形状が自動結合される&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;明示的に結合したい場合は &lt;code&gt;union [...]&lt;/code&gt; を使います。&lt;/p&gt;&#xA;&lt;h2 id=&#34;プリミティブ&#34;&gt;プリミティブ&lt;/h2&gt;&#xA;&lt;h3 id=&#34;3d&#34;&gt;3D&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;box width height depth&#xA;cylinder radius height&#xA;sphere radius&#xA;cone r1 r2 height&#xA;torus r1 r2&#xA;wedge dx dy dz ltx&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;cone r1 r2 h&lt;/code&gt; は截頭円錐（frustum）を作ります。&lt;code&gt;r1&lt;/code&gt; が底面半径、&lt;code&gt;r2&lt;/code&gt; が上面半径、&lt;code&gt;h&lt;/code&gt; が高さです。&lt;code&gt;r2&lt;/code&gt; を0にすると完全な円錐になります。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cone 10 5 20       # 截頭円錐（底面R10、上面R5、高さ20）&#xA;cone 10 0 20       # 完全な円錐&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;torus r1 r2&lt;/code&gt; はドーナツ形状を作ります。&lt;code&gt;r1&lt;/code&gt; は中心からチューブ中心までの主半径、&lt;code&gt;r2&lt;/code&gt; はチューブの管半径です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>チートシート</title>
      <link>https://polyscript.objhub.org/ja/cheatsheet/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://polyscript.objhub.org/ja/cheatsheet/</guid>
      <description>&lt;p&gt;印刷して手元に置くとはかどる。たぶん。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;プリミティブ&#34;&gt;プリミティブ&lt;/h2&gt;&#xA;&lt;h3 id=&#34;3d&#34;&gt;3D&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;関数&lt;/th&gt;&#xA;          &lt;th&gt;引数&lt;/th&gt;&#xA;          &lt;th&gt;例&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;box&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;w h d&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;box 80 60 10&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;cylinder&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;r h&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;cylinder 5 10&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;sphere&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;r&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;sphere 10&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;cone&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;r1 r2 h&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;cone 10 0 20&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;torus&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;r1 r2&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;torus 20 5&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;wedge&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;dx dy dz ltx&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;wedge 20 10 15 5&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;位置規約&lt;/strong&gt;: &lt;code&gt;box&lt;/code&gt;/&lt;code&gt;cylinder&lt;/code&gt;/&lt;code&gt;sphere&lt;/code&gt;/&lt;code&gt;cone&lt;/code&gt;/&lt;code&gt;torus&lt;/code&gt; は原点中心（centered）。&lt;code&gt;extrude h&lt;/code&gt; は z=0..h で底面合わせ。混在する場合は &lt;code&gt;| floor&lt;/code&gt; / &lt;code&gt;translate&lt;/code&gt; / &lt;code&gt;center:(true,true,false)&lt;/code&gt; で揃える。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;2d&#34;&gt;2D&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;関数&lt;/th&gt;&#xA;          &lt;th&gt;引数&lt;/th&gt;&#xA;          &lt;th&gt;例&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rect&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;w h&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;rect 50 30&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;circle&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;r&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;circle 10&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;ellipse&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;rx ry&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;ellipse 10 5&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;polygon&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;n r&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;polygon 6 10&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;polyline&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;points&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;polyline [(0,0), (10,0), (5,10)]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;text&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;content size&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;text &amp;quot;ABC&amp;quot; 10&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;sketch&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;[segments]&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;sketch [(5,0), arc (5,0) (0,-5) (-5,0), (0,7), (5,0)]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;code&gt;sketch&lt;/code&gt; セグメント: タプル=直線, &lt;code&gt;arc 開始点 通過点 終点&lt;/code&gt;=3点円弧, &lt;code&gt;arc 開始点 終点 center:(cx,cy)&lt;/code&gt;=中心アーク, &lt;code&gt;arc 開始点 終点 radius:半径&lt;/code&gt;=半径アーク, &lt;code&gt;bezier [制御点]&lt;/code&gt;=ベジエ（開始点は前セグメント終端、制御点と末尾の終点のみ指定）, &lt;code&gt;spline [通過点]&lt;/code&gt;=スプライン（同様）。最初の要素が開始点、自動close。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
