【OrcaSlicer】1層目の定着が悪いときにすること その1 ブリムの設定
OrcaSlicerに限らず、FDMプリンタの鬼門である1層目
こんなとき気を付けたい
・プレートへの設置面積が小さい(上物の形状にもよりますが、約D10mm以下は警戒しています。)
・サポートが独立している
定着が悪い、そんなときどうする
ブリムを設定していなければ、まずはブリムを追加しよう
ブリムって何?↓これです↓
OrcaSlicerのどこを設定すればよいか
「その他」タブの「ブリムタイプ」から選択しましょう。
ブリムの種類が選択できます。
・Mouse ear
めくれやすい角にブリムが生成されます。
・Ouetr brim only
プレート接地面の外側にブリムが生成されます。
・Inner brim only
プレート接地面の内側にブリムが生成されます。
・Outer and Inner brim
プレート接地面の内側と外側にブリムが生成されます。
OrcaSlicerでブリムの設定をする方法についての説明は以上です。
適切なブリムの設定をして安定した1層目を印刷出来るようになりたいですね。
PythonでSTLデータを作成 その1:numpy-stlを使って植木鉢用受け皿のモデリングに挑戦! #CAD自動化
ChatGPTなどのいわゆるAIサービスが普及しつつあり、色々な事務仕事が簡単に自動化出来るようになりました。
私は普段3D CADを使って製品の形状を書いている訳ですが、一向にモデリングの自動化の気配を感じません。早く楽になって欲しいけど、実際自動化しようと思ったらどうやるんだろうという興味が湧いてきたので、簡単なもののモデルをPythonを使って書いてみようと思います。
今回書くモデルは観葉植物などの植木鉢の下に敷くあれ、受け皿のモデリングをPythonを使ってトライしたのちに、鉢のサイズに合わせて後から自動で変更出来るように作ってみます。
まずはコマンドプロンプトからライブラリをインストールします。
〜 pip install numpy numpy-stl 〜
今回作成したコードはこちらです。
〜 import numpy as np from stl import mesh import argparse def create_complete_cylinder_with_depressions(diameter, height, filename='flower_saucer.stl'): diameter = diameter +4 #フランジ分を追加、引数には鉢底の直径を入力してほしい radius = diameter / 2.0 first_offset_radius = radius - 2 # 最初のくぼみの2mmオフセット first_depth = 1 # 最初のくぼみの深さ1mm second_offset_radius = radius * 0.8 # 2番目のくぼみの半径 second_depth = height - 2 # 全高から2mm残す深さ second_base_offset_radius = second_offset_radius - second_depth # 2番目のくぼみの底面の半径 num_points = 100 # 円周上の点を生成 angles = np.linspace(0, 2 * np.pi, num_points, endpoint=False) base_circle = np.array([np.cos(angles) * radius, np.sin(angles) * radius, np.zeros(num_points)]).T top_circle = np.array([np.cos(angles) * radius, np.sin(angles) * radius, np.full(num_points, height)]).T first_depression_top = np.array([np.cos(angles) * first_offset_radius, np.sin(angles) * first_offset_radius, np.full(num_points, height)]).T first_depression_base = np.array([np.cos(angles) * first_offset_radius, np.sin(angles) * first_offset_radius, np.full(num_points, height - first_depth)]).T second_depression_top = np.array([np.cos(angles) * second_offset_radius, np.sin(angles) * second_offset_radius, np.full(num_points, height - first_depth)]).T second_depression_base = np.array([np.cos(angles) * second_base_offset_radius, np.sin(angles) * second_base_offset_radius, np.full(num_points, height - second_depth)]).T # STLファイルに保存するためのデータ構造を作成 data = np.zeros(num_points * 12, dtype=mesh.Mesh.dtype) cylinder_mesh = mesh.Mesh(data, remove_empty_areas=False) # 三角形を作成してメッシュに追加 for i in range(num_points): # 底面の三角形 cylinder_mesh.vectors[i * 12] = np.array([base_circle[i], base_circle[(i + 1) % num_points], [0, 0, 0]]) # シリンダーの側面 cylinder_mesh.vectors[i * 12 + 1] = np.array([base_circle[i], top_circle[i], base_circle[(i + 1) % num_points]]) cylinder_mesh.vectors[i * 12 + 2] = np.array([base_circle[(i + 1) % num_points], top_circle[i], top_circle[(i + 1) % num_points]]) # 最初のくぼみでトリムされた上面の残り cylinder_mesh.vectors[i * 12 + 3] = np.array([top_circle[i], first_depression_top[(i + 1) % num_points], first_depression_top[i]]) cylinder_mesh.vectors[i * 12 + 4] = np.array([first_depression_top[(i + 1) % num_points ], top_circle[(i + 1) % num_points], top_circle[i]]) # 最初のくぼみの側面 cylinder_mesh.vectors[i * 12 + 5] = np.array([first_depression_top[i], first_depression_base[i], first_depression_base[(i + 1) % num_points]]) cylinder_mesh.vectors[i * 12 + 6] = np.array([first_depression_top[(i + 1) % num_points], first_depression_top[i], first_depression_base[(i + 1) % num_points]]) # 最初のくぼみの底面 cylinder_mesh.vectors[i * 12 + 7] = np.array([first_depression_base[i], first_depression_base[(i + 1) % num_points], second_depression_top[i]]) cylinder_mesh.vectors[i * 12 + 8] = np.array([first_depression_base[(i + 1) % num_points], second_depression_top[(i + 1) % num_points], second_depression_top[i]]) # 二番目のくぼみの側面 cylinder_mesh.vectors[i * 12 + 9] = np.array([second_depression_top[i], second_depression_base[i], second_depression_top[(i + 1) % num_points]]) cylinder_mesh.vectors[i * 12 + 10] = np.array([second_depression_top[(i + 1) % num_points], second_depression_base[i], second_depression_base[(i + 1) % num_points]]) # 二番目のくぼみの底面 cylinder_mesh.vectors[i * 12 + 11] = np.array([second_depression_base[i], second_depression_base[(i + 1) % num_points], [0,0,height - second_depth]]) # ファイルに保存 cylinder_mesh.save(filename) def main(): parser = argparse.ArgumentParser(description="Generate an STL file for a cylinder with depressions.") parser.add_argument("diameter", type=float, help="Diameter of the cylinder") parser.add_argument("height", type=float, help="Height of the cylinder") args = parser.parse_args() create_complete_cylinder_with_depressions(args.diameter, args.height) if __name__ == "__main__": main() 〜
こちらのコードをstl_make_flower_saucer.pyという名前を付けて保存して
コマンドプロンプトから実行します。
ファイル名の後に 直径 高さ の情報を引数として入力します。
〜 python stl_make_flower_saucer.py 100 10 〜
stl_make_flower_saucer.pyが保存されているフォルダにflower_saucer.stlが生成されました。
直径100mm 高さ10mmの受け皿の3Dデータが出来ました。
引数を変えてあげると
Pythonを使って3Dデータを作成して
引数で形状変更をすることが出来ました。
今日は一旦ここまで。
OrcaSlicerのダウンロードからセットアップまで
現在AnkerM5という3Dプリンタを使用しているのですが
どうも純正スライサーが調子が悪いので、OrcaSlicerを試してみたいと思います。
ダウンロード~セットアップまでの備忘録
2024/4/16現在
こちらのgithubに公開されている.zipファイル(ページ下方)をダウンロード
私はWin(10)を使っているのでWin64.zipをダウンロードします。
zipをダウンロードしたらまずは展開をします。
orca-slicer.exeを起動します。
以下をセットアップで聞かれます。
・国の選択
・3Dプリンタの機種の選択
・材料の選択
ここでfinishを押したら
最新版に更新しますか?と聞かれて飛ばされたのが↓こちら
また同じようにダウンロードして、
OrcaSlicer_Windows_Installer_V2.0.0.exeを起動します(今回は.zipじゃなかった)
するとセットアップが始まり、先ほどダウンロードしたOrcaSlicerのバージョンがあがりました。
ここまででセットアップは完了です。
いけばなのすすめ
普段は設計・ものづくり屋さんとして工業製品、農業関連の設計や製作をしています。実家が花屋ということもあるのか?ないのか、いけばなが好きで度々依頼を受けていけばなを題材にしたワークショップを開催しています。
いけばなは作品の出来栄えそのものよりも、製作の過程で「自分と向き合う」ことでより、花が生きてくるという感覚が実感できる、また素敵だと思ったお花を選んで組み合わせることで作品が完成するので割とお手軽に「作り手」になれるよいワークだと感じています。
子供から大人まで色々な方に個人的におすすめしていますが、この記事ではおすすめしたい内容を「いけばなを経験したことが無い大人の方向け」にお伝え出来ればと思います。
自分が作ったものが答え
いけばなは「これでよし」と自分で決めたところで完成します。普段は「すでに決まっていること」の中で過ごす時間が多く、答えがあることが当たり前になっていたりすると「自由の中で、自分で決める」ことへ戸惑いを感じるかもしれませんが、自分が美しい、面白い、綺麗など感じたことが伝わる作品になったか、自由の中での葛藤を通して、是非感性的に悩むことを楽しんで頂きたいなと思います。花は基本的に切られた状態のものを使用することになりますので自分が迷っている、手に持っている間だけ花が弱ります、そういった性質もあり何日もかけて作品を具現化していくというものではないです。自分の意志で初めて、自分の意志で終える、そのサイクルが長くて1時間程度で経験出来る良いコンテンツだと思います。終わりを楽しむという意味でおすすめなのは1度に何作品も作るのではなく、緊張感をもって1作品を完成させることです。(1作品を緊張感をもって製作出来る方は結果的に何作品か作ってもらっても構いません)
切る緊張感と向き合う
前項でいけばなの終わり方に触れましたが、その製作プロセスも判断の連続になります。分かりやすい事例として、形などを整えるために枝や葉、ときには花を切り落とすことが求められるのですが、これが当然後戻りが出来ないので勇気が必要です。このように製作を進める中で切るきらないの判断、折る折らないなどの判断が連続して迫られます。すぐに切れる方もいますし、迷いに迷う方もいます。
私はすぐに切れるほうなんですが、割とあとから、あーもう少し長く使いたかった~(汗。ということもあります。繊細に考え出すとすごく繊細な行為ですが大胆さも求められます。迷えば迷いが花に出る世界だと痛感します。
ただし切ってしまったその花を今度はどう生かすか、その花を起点に違うアイデアが生まれます。
観察すること、感じ取ること
お花については必ずしもお花屋さんなどで購入しなければならないものではありません。自分で育てた花、もしくは庭などの採取可能な場所に自生している植物、つまり根と葉と花がつながった状態の花を自分で選んで切ってみることも楽しいです。その植物がどのように生きてきたか、それを知った状態で切ることでよく花と花が育った環境を見るようになるからです。この花を、この葉をどう使おうかな、咲きそうだな・・・花が終わりそうだな・・・と無意識に観察する状態に入ると、線や線や表情などがありありと伝わってくるようになるでしょう。そしてその中から自分が「今」面白いと思ったものを切っていけましょう。
お花を用意してもらったときにも、その中から美しい!面白い!綺麗!など自分の感覚に訴えてくるものを選ぶのが良いと思います。そしてそれが伝わるように工夫しながら作品を製作します。相手に何を伝えたいか、は製作者側の解像度の範囲外へは出ることはありません。伝わるかどうかは見る側にゆだねられるので、伝わるかどうかはまた別の話ですが。いけることが上手な方は見ることも上手なことが多いです。普段のコミュニケーションのようですね。
私は自分の作品を展示会などに出展する際は自分で育てた花を使います。ワークショップの中でも私が育てた花を持っていくこともありますので是非切ってみて欲しいです。(畑でワークショップにもチャレンジしてみたい・・・)
自由と向き合う
私の学んでいる流派、池坊では「自由花」というスタイルがあります。自由花なので自由です。自由と言っても私はそのときにある花材、置きたい場所、見せたい人などそのときの要件で形が決まってきていると感じています。さあ自由です、と言われたときの自分がどう形を作っていくかということに注目するのも面白いかもしれません。これも人それぞれです。最初に完成の大体の雰囲気を思い描いてから始める方、1本1本挿す度に次の一手が決まる方など。
いけばなには「手直し」という行為があります。自分が完成した、と思ったタイミングで先生や先輩にアドバイスを貰います。少し花の向きを変えたり、ここにこれを足して、これを抜いてと助言を頂けます。私は割と自分の作品を触ってもらうことが好きで、誰かの手によって自分の花の表情が変わる瞬間にパズルがはまったような感じがします。より花がのびのびとしてくれればその手は私じゃなくてもOK派です。逆に触られたくないという方もいると思います。アドバイスは聞きつつも自分の思った通りにいけたい。良い花をいけようと思えば結局は自分と向き合うしかないと思いますのでそれもまた良いと思います。
ここまで、いけばなのワークショップのおすすめポイントを挙げてみました。いかがでしたでしょうか?体験してみたい方はお知らせください。