狠狠撸
Submit Search
自作ユニバーサルプレート&补尘辫;尝贰骋翱互换パーツ作成ツールのなかみのはなし
?
Download as PPTX, PDF
?
0 likes
?
105 views
M
MinoruInoue2
Follow
https://iotlt.connpass.com/event/256929/ ビジュアルプログラミングIoTLT vol.12登壇資料
Read less
Read more
1 of 14
Download now
Download to read offline
More Related Content
自作ユニバーサルプレート&补尘辫;尝贰骋翱互换パーツ作成ツールのなかみのはなし
1.
自作ユニバーサルプレート&LEGO互換パーツ作成ツールの なかみのはなし 2022/9/23 VIoTLT vol.12 いのうえ
みのる
2.
名前:井上 稔(Minoru INOUE) 出没先:
コミュニティ“ゆるメカトロ” Facebook: minoru.inoue.90 Twitter : @henjin01_Fab 半年以上LTしてないかも。。。お久しぶりです! (ビジュアルプログラミングネタじゃないけどゆるして???)
3.
Protolotusって? 自作ユニバーサルプレートや自作LEGOテクニックパーツを 自作できるツール フリーソフト! このテーブルのセルをクリックすると ブロックが追加?変更?削除される Githubページ コードもバイナリも 公開! (Windows or
Mac) - 開発言語:Python - GUI:pyQtとOpenGL - STL出力:numpy-stl
4.
3顿プリンタで出力できるよ!(作品例)
5.
なんの話をするの? ツールを実現しているロジックの紹介をしてみます
6.
ロジックについて考えたきっかけ 昔のツールは適当だった。動作モッサリで拡張性も微妙だった。 ブロック追加ごとに 再描写 →ブロック数が増える と待ち時間増加 ブロックの種類が 今後も増えそう →データ構造も考える 必要あり 差分だけ変更を加えて、各ブロックにデータをもたせる形にする必要があった 画面描写と STL作成は 分離したい
7.
1 2 3 0 … … 1
2 1 2 データ構造 ? ブロック値(1,2,3) ? ブロック座標(row, column) ? ハッシュ値(row+column最大値*column) ? ブロック設定(タミヤ互換 or LEGO互換) ? メッシュデータ(GLMesh) column row Table: データなし (1,1)に1のブロックを置く ハッシュ値1 (1,2)に2のブロックを置く ハッシュ値2 (2,1)に3のブロックを置く ハッシュ値11 クリックした順に ブロック操作が入る キュー的にOpenGL表示データを一列に格納する形を採った また、ハッシュ値から一意にブロックを特定できる。 … Queue:
8.
ブロック追加時 1 2 3 0 (1,1)に1のブロックを置く
ハッシュ値1 (1,2)に2のブロックを置く ハッシュ値2 … … (2,1)に3のブロックを置く ハッシュ値11 1 2 3 1 (1,1)に1のブロックを置く ハッシュ値1 (1,2)に2のブロックを置く ハッシュ値2 … … (2,1)に3のブロックを置く ハッシュ値11 (2,2)に2のブロックを置く ハッシュ値12 (2,2)をクリック 0表示になっている箇所をクリックすると、 ハッシュ値と一緒にブロック操作が入る 1 2 1 2
9.
1 ブロック変更時 1 2 3 1 (1,1)に1のブロックを置く
ハッシュ値1 (1,2)に2のブロックを置く ハッシュ値2 … … (2,1)に3のブロックを置く ハッシュ値11 1 3 3 (1,1)に1のブロックを置く ハッシュ値1 (1,2)に3のブロックを置く ハッシュ値2 … … (2,1)に3のブロックを置く ハッシュ値11 (2,2)に2のブロックを置く ハッシュ値12 (1,2)をクリック →ハッシュ値2探す テーブルクリック時にハッシュに該当するブロック値を変える (2,2)に2のブロックを置く ハッシュ値12 1 2 1 2 search!
10.
ブロック削除時 1 2 3 1 (1,1)に1のブロックを置く
ハッシュ値1 (1,2)に2のブロックを置く ハッシュ値2 … … (2,1)に3のブロックを置く ハッシュ値11 (2,2)に2のブロックを置く ハッシュ値12 1 2 1 2 (1,1)に1のブロックを置く ハッシュ値1 (2,2)に2のブロックを置く ハッシュ値12 ハッシュ値11 delete! 1 2 1 … … 0 (1,2)に2のブロックを置く ハッシュ値2 (2,1)をクリック →ハッシュ値11探す 数字のカウントアップが一巡した(3→0)場合には キューからブロック操作を削除する
11.
STL出力 1 2 3 1 (1,1)に1のブロックを置く
ハッシュ値1 (1,2)に2のブロックを置く ハッシュ値2 … … (2,1)に3のブロックを置く ハッシュ値11 (2,2)に2のブロックを置く ハッシュ値12 1 2 1 2 がクリックされたタイミングでテーブルを総なめして作成する For二重ループで 0以外を総なめ キュー内のデータはOpenGL表示用の データ=STL作成では使わない
12.
できたこと 問題としていたことはひとまずパス ブロック 追加ごとに再描写 →待ち時間増加 ブロックの種類が 今後も増えそう 画面描写と STL作成は 分離したい キュー&ハッシュでデータを個別管理 操作はブロック個別になった ブロックの描写単位でブロック情報をもたせた ブロック値のカウントアップで定義可能 画面描写時とSTL作成時で参照するデータが 異なるため、独立性が高くなった
13.
まとめ(かんそう) 趣味ツールとはいえ、データ構造はソフトウェアのコア アイデアを送り出すまではスピード重視 But→送り出したあとは手早くデータ構造を見直すべき データ構造を考えるのはダルい But→一回決まると後工程が楽 レスポンス面の不便=ロジックとデータ構造の見直し 不便を感じたらドキュメントに起こそう
14.
以上です!
Download