2020年3月31日火曜日

ffmpeg で mkv ファイルを連結する方法

環境

  • macOS 10.15.4
  • ffmpeg 4.0.2

連絡する mvk ファイルが記載されているリストファイル作成

  • vim list.txt
file '/Volumes/buffalo/dir/title00.mkv'
file '/Volumes/buffalo/dir/title01.mkv'
file '/Volumes/buffalo/dir/title02.mkv'
file '/Volumes/buffalo/dir/title03.mkv'
file '/Volumes/buffalo/dir/title04.mkv'
file '/Volumes/buffalo/dir/title05.mkv'
file '/Volumes/buffalo/dir/title06.mkv'
file '/Volumes/buffalo/dir/title07.mkv'
file '/Volumes/buffalo/dir/title08.mkv'
file '/Volumes/buffalo/dir/title09.mkv'
file '/Volumes/buffalo/dir/title10.mkv'
file '/Volumes/buffalo/dir/title11.mkv'
file '/Volumes/buffalo/dir/title12.mkv'

連結

  • ffmpeg -f concat -safe 0 -i list.txt -c copy titles.mkv

2020年3月24日火曜日

PA-API5.0 を Ruby の vacuum というライブラリを使ってコールしてみた

概要

Product Advertising API 5.0 (PA-API5.0) を vacuum で試してみました
ちなみに amazon-ecs では 5.0 に対応しておらずコールすると HTTP Response: 503 Service Unavailable - AWS Access Key ID: AKIxxxxxxxxxxxxxxxxx. You are submitting requests too quickly. Please retry your requests at a slower rate. になってしまいます

環境

  • macOS 10.15.3
  • Ruby 2.6.2p47
  • vacuum 3.3.0

初期化する

まずは初期化します
初期化するには最低 3 つの認証情報が必要で「アクセスキー」「シークレットキー」「パートナーID」が必要になります
「パートナーID」はいろいろな値を設定できますが個人で使う分にはトラッキング ID を指定すれば OK です

require 'vacuum'

request = Vacuum.new(
  marketplace: 'jp',
  access_key: 'AKIxxxxxxxxxxxxxxxxxx',
  secret_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  partner_tag: 'store-99'
)

こんな感じで OK です
また marketplace は検索する国を選択できます
指定可能な国はこちらを参照してください

とりあえず検索してみる

初期化できたら検索してみましょう
search_items メソッドが簡単です

require 'vacuum'
require 'json'

request = Vacuum.new(
  marketplace: 'jp',
  access_key: 'AKIxxxxxxxxxxxxxxxxxx',
  secret_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  partner_tag: 'store-99'
)

response = request.search_items(title: '3Dプリンタ')
puts response.to_h.to_json

その名の通り title: を指定するとキーワードが含まれるタイトルの商品を取得します
結果はハッシュにすると扱いやすいです

単語で検索する

次に複数のキーワードで検索してみます
また API で取得する情報も指定したいと思います

require 'vacuum'
require 'json'

request = Vacuum.new(
  marketplace: 'jp',
  access_key: 'AKIxxxxxxxxxxxxxxxxxx',
  secret_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  partner_tag: 'store-99'
)

response = request.search_items(
  keywords: '3Dプリンタ',
  resources: %w[Images.Primary.Medium ItemInfo.Title]
)
puts response.to_h.to_json

複数のキーワードを指定する場合は keywords: を指定します
タイトル以外も検索対象になります
API でほしい情報を増やしたい場合は resources: を指定します
search_items メソッドで指定可能なリソースはこちらを参考にしてください

これで結果を取得すると画像 (Images) やタイトルの情報 (ItemInfo) が追加されています

{
  "SearchResult": {
    "Items": [
      {
        "ASIN": "B07KT611TM",
        "DetailPageURL": "https://www.amazon.co.jp/dp/B07KT611TM?tag=store-99&linkCode=osi&th=1&psc=1",
        "Images": {
          "Primary": {
            "Medium": {
              "Height": 160,
              "URL": "https://m.media-amazon.com/images/I/413w1hy-yIL._SL160_.jpg",
              "Width": 160
            }
          }
        },
        "ItemInfo": {
          "Title": {
            "DisplayValue": "3Dプリンタ 本体 完成品 小型 家庭用 3Dプリンター 組立て済み 軽量 コンパクト PLAフィラメント 造形サイズ
11×11×12.5cm 日本語マニュアル&日本語メニュー 初心者 (薄い青)",
            "Label": "Title",
            "Locale": "ja_JP"
          }
        }
      }
      ・・・

Items の長さは

どうやら一回の検索で上位 10 個まで取得できるようです

  • bundle exec ruby app.rb | jq . > log
  • cat log | jq '.SearchResult.Items|length'

=> 10

最大で 10 個のようで 1 から 10 までは変更可能ですが 10 以上は指定できないようです (ItemCount)

ソートしてみる

sort_by: を使います
指定可能なパラメータはこちらを参照してください

require 'vacuum'
require 'json'

request = Vacuum.new(
  marketplace: 'jp',
  access_key: 'AKIxxxxxxxxxxxxxxxxxx',
  secret_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  partner_tag: 'store-99'
)

response = request.search_items(
  keywords: '3Dプリンタ',
  resources: %w[Images.Primary.Medium ItemInfo.Title],
  sort_by: 'AvgCustomerReviews'
)
puts response.to_h.to_json

指定しない場合は Marketplace (jp) と SearchIndex (All) との組み合わせでいい感じに返してくれるようです
Featured などはランクが高い商品で並べ替えできるので使えそうです
というか何も指定しないと Featured と同じ挙動っぽいです

カテゴリを指定する

キーワード+カテゴリ検索はよく使うと思います
カテゴリを指定するには search_index: を使います
が指定する値を取得するには一旦 resources:SearchRefinements を指定して指定可能なカテゴリの一覧を取得する必要がありそうです

require 'vacuum'
require 'json'

request = Vacuum.new(
  marketplace: 'jp',
  access_key: 'AKIxxxxxxxxxxxxxxxxxx',
  secret_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  partner_tag: 'store-99'
)

response = request.search_items(
  keywords: '3Dプリンタ',
  resources: %w[Images.Primary.Medium ItemInfo.Title SearchRefinements],
)
puts response.to_h.to_json

すると以下のように検索対象だったカテゴリの一覧が取得できます

"SearchRefinements": {
  "SearchIndex": {
    "Bins": [
      {
        "DisplayName": "産業・研究開発用品",
        "Id": "Industrial"
      },
      {
        "DisplayName": "本",
        "Id": "Books"
      },
      {
        "DisplayName": "Kindleストア ",
        "Id": "KindleStore"
      },
      {
        "DisplayName": "パソコン・周辺機器",
        "Id": "Computers"
      },
      {
        "DisplayName": "ホーム&キッチン",
        "Id": "HomeAndKitchen"
      },
      {
        "DisplayName": "DIY・工具・ガーデン",
        "Id": "ToolsAndHomeImprovement"
      },
      {
        "DisplayName": "洋書",
        "Id": "ForeignBooks"
      },
      {
        "DisplayName": "家電&カメラ",
        "Id": "Electronics"
      },
      {
        "DisplayName": "文房具・オフィス用品",
        "Id": "OfficeProducts"
      },
      {
        "DisplayName": "おもちゃ",
        "Id": "Toys"
      },
      {
        "DisplayName": "ホビー",
        "Id": "Hobbies"
      },
      {
        "DisplayName": "Android アプリ",
        "Id": "MobileApps"
      },
      {
        "DisplayName": "その他すべて",
        "Id": "EverythingElse"
      },
      {
        "DisplayName": "ビューティー",
        "Id": "Beauty"
      },
      {
        "DisplayName": "服&ファッション小物",
        "Id": "Apparel"
      },
      {
        "DisplayName": "ドラッグストア",
        "Id": "HealthPersonalCare"
      },
      {
        "DisplayName": "車&バイク",
        "Id": "Automotive"
      },
      {
        "DisplayName": "大型家電",
        "Id": "Appliances"
      },
      {
        "DisplayName": "スポーツ&アウトドア",
        "Id": "SportsAndOutdoors"
      },
      {
        "DisplayName": "ベビー&マタニティ",
        "Id": "Baby"
      },
      {
        "DisplayName": "シューズ&バッグ",
        "Id": "Shoes"
      },
      {
        "DisplayName": "ジュエリー",
        "Id": "Jewelry"
      },
      {
        "DisplayName": "ペット用品",
        "Id": "PetSupplies"
      },
      {
        "DisplayName": "デジタルミュージック",
        "Id": "DigitalMusic"
      },
      {
        "DisplayName": "TVゲーム",
        "Id": "VideoGames"
      },
      {
        "DisplayName": "楽器",
        "Id": "MusicalInstruments"
      },
      {
        "DisplayName": "PCソフト",
        "Id": "Software"
      }
    ],
    "DisplayName": "カテゴリー",
    "Id": "SearchIndex"
  }
}

これで取得できた Id の部分を指定することで検索時にカテゴリを指定することができます

require 'vacuum'
require 'json'

request = Vacuum.new(
  marketplace: 'jp',
  access_key: 'AKIxxxxxxxxxxxxxxxxxx',
  secret_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  partner_tag: 'store-99'
)

response = request.search_items(
  keywords: '3Dプリンタ',
  resources: %w[Images.Primary.Medium ItemInfo.Title SearchRefinements],
  search_index: 'Industrial'
)
puts response.to_h.to_json

2 ページ目を取得する

1 - 10 件目がデフォルトで取得できますが 11 - 20 件目は item_page: を指定します

require 'vacuum'
require 'json'

request = Vacuum.new(
  marketplace: 'jp',
  access_key: 'AKIxxxxxxxxxxxxxxxxxx',
  secret_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  partner_tag: 'store-99'
)

response = request.search_items(
  keywords: '3Dプリンタ',
  resources: %w[Images.Primary.Medium ItemInfo.Title],
  item_page: 2
)
puts response.to_h.to_json

最後に

vacuum というライブラリを使って PA-API5.0 をコールしてみました
4.0 は完全に使えなくなり 5.0 になっているので 503 エラーが出る人は 5.0 に移行できているか確認しましょう
また 5.0 からいろいろと仕様が変更されており Amazon Product Advertising API は Amazon アフィリエイトで売上がある程度あるアカウントでないと使えなくなっているようです
細かい仕様はわかりませんが単純に登録してすぐは API が使えないようです

まぁ確かに売り上げがないアカウントに API を提供しても効果はなさそうなので間違っていない気はしますが、、
一応問い合わせすることができるのでコール時にエラーになる人は問い合わせてみるのも手かもしれません

参考サイト

2020年3月21日土曜日

PLA で印刷ミスした部分をハンダゴテで修復してみた

概要

3D プリンタで印刷した場合にオーバハングや反り返り、細かい印刷などによりフィラメントがグチャグチャになることがあると思います
過去に紹介した記事ではそうならないように上手に印刷する方法を紹介しました
それでも印刷ミスすることはあります
そんな場合にどうやったら簡単に修正できないかなと思いいろいろ調べると Retouch3D という商品を見つけました
これが手に入れば一番なのですが価格も結構高くまた海外製品なので到着まで時間がかかったりします
よく見ると構造としては熱で溶かして再形成しているっぽくそれではハンダゴテはどうだろうと思い試してみました

この記事では試した結果とハンダゴテを使って PLA の印刷ミスを修正する際のポイントなどについて紹介したいと思います

使用するハンダゴテ

手元にあった白光REDを使います
またコテ先は完全にハンダ用としては使えなくなるので注意してください
自分は変えのコテ先が 1 つあったので 1 つを完全に 3D プリンタ用として使うようにしました

コテ先についているハンダをスポンジや金網で落としましょう
だいたい落ちれば大丈夫です
コゲが残っている場合は PLA を修復した場合にコゲが PLA 側に付着して印刷物が汚くなる可能性があります
事前にヤスリなどでコゲを落としておくと良いかなと思います
あとで紹介しますが自分はそれに気づかず最初に PLA を修復した際にコゲが結構付着してしまいました、、

修復するプリント物

大きさ的には 10cm ほどのレールになります
前後の部分がオーバハングでほつれているのが確認できます
これを修復してみたいと思います

作業中は要換気

先に記載しておきます
作業中は PLA を溶かすため PLA 特有にニオイが発生します
また多少の煙も出るので換気しながら行いましょう
また長時間の作業は気分が悪くなるかもしれないので適度に休憩しながら行ってください

いざ修復

どきどきですがやるしかないのでやっていきます
白光レッドは 300度あたりまで温度が上昇するので PLA はあっという間に溶けてしまいます
なので押し付ける感じではなく「撫でる」ように修復するのがポイントです

ちょっとやってみた感じ

更に気になるところを修復した感じ
このあたりで気づきましたがコゲがだいぶ付着しています、、

反対側もやっていきます
元々こんな感じだったのが

こんな感じになりました
この写真で見るとコゲのせいでひどくなっている感じもしますがほつれの部分はなくなりつるつるになっています

とりあえず 1 つ完成

まずは 1 つやってみました
コゲが気になりますがほつれはほぼなくなりました

修正後はどうやらテカテカになるようです
元のプラスチックっぽい感じではなく溶けて固まったブラスチックのようになります
もしかすると 3Dプリントのように急冷しながらやれば元の質感になるかもしれません

自分はファンを使って冷やしました

修復中は PLA がぶよぶよの状態になります
すぐに固めたい場合はファンなどを使うと簡単に固まります

ハンダゴテの温度にもよりますが先程紹介したように急冷しながらやるとキレイに仕上がるかもしれません

はみ出した部分はカッターやハサミでカットすると良い

これも経験からの判断ですが修復は PLA を溶かして平らにしているためはみ出すことがあります
はみ出した部分を元の部分にまた戻そうとすると更に溶けて今度は印刷物の本体に多大な影響をもたらすことがあります
なのではみ出した部分はもう触れずにあとでカッターやハサミでカットするほうが最終的にはキレイな仕上がりになる印象です

ちなみにカッター方式にして再度修正したら以下のようになりました

他の 3 つもやってみた

同じように失敗したレールが 3 つほどあったので同じ用に修復してみました
結果は以下の通りです

最初の修復に比べてだいぶコゲがなくなっているのが確認できます
修復中にコテ先のコゲがなくなり後でやった印刷物の修復はキレイに仕上がるようです

ブヨブヨ中は簡単に変形できる

コテでいろいろと温めていると修復部分全体がブヨブヨな状態になってきます
その間は正直手でも形を変形することができます (当然熱いですが)
その間はハサミでチョキチョキ切ることもできたので形を整えやすい気もしました
なので敢えてブヨブヨの状態を作ってハサミで一気に整形するのも手段としてはありかなと思いました

もうちょっとすごい手段としてレンジなので全体を温めて一気に整形するのもありなのかもしれません
ただドロドロになったら終わりなのであまりオススメはしませんが

修復すると造形物は小さくなる

当然ですが溶かす -> カットという流れになるので元の造形物よりは小さくなります
ジョイント部分などミリ単位で設計していた造形物の場合は修復しすぎて小さくなりすぎないように注意する必要があります

サポートや失敗したフィラメントは取っておく価値がでてきた

作業中に気がついたのですがインフィルが大きい場合にはすぐに空洞部分が出現してしまいます
そうなった場合に周りのフィラメントを再度溶かして持ってこようとすると修復範囲も広がってしまい元の造形物を更に痛めてしまう可能性が出てきてしまいます

なのでそういった場合にはサポートでいらなくなったフィラメントや失敗した造形物のフィラメントを使いましょう
具体的には穴を埋めたい部分くらいにフィラメントをカットしその上から軽くハンダゴテを押し当てて穴を埋めるようにしましょう
こうすることで元の造形物の大きさを小さくすることなく穴を埋めることが可能です

またこれが嬉しいのは失敗したフィラメントを再利用できることかなと思います
せっかく消費したフィラメントを捨てるのがもったいなと思っていたので

コテ先をカッター上のものに変更すると更にキレイに仕上がると感じた

ハンダゴテのコテ先はいろいろな形状に変更できることが多いです
例えばヒートナイフ (参考 (Zacro 6 in 1電子はんだごて セット 半田 温度調節可能(200~450℃)5個交換コテ先付き 60W 110V)) のようなものを使えば更にキレイにカットや平にできるかなと思います
自分は調べてないですが 100円ショップでもこういったコテ先が買えるかもしれません

最後に

PLA で印刷ミスした部分をハンダゴテを使って修復する方法を紹介しました
前は削って対応していましたが削るよりも簡単かつキレイにできるかもしれません
ただ修復後の質感がテカテカになってしまうのでそこは注意が必要かもしれません

機会があればコテ先を変えたり急冷しながらやってみた結果も紹介できればなと思っています
せっかく頑張って作った造形物なのでキレイにしてあげたいですね

2020年3月20日金曜日

QIDI Tech X-Smart でオーバハングテストをしてみた

概要

今更ではあるのですが QIDI Tech の X-Smart を使ってオーバハングのテストを行ってみました
またオーバハングと冷却の影響についてもテストしてみました

環境

  • QIDI Tech X-Smart (セットアップなどは過去記事を参照してください)

使用したフィラメント

ANYCUBIC 3Dプリンター用 造形 フィラメント pla 高品質 高密度 環境保護 純正材料 【1.75mm】【正味1kg】(plaグレー)

リンクはグレーですがこれの白を使っています

オーバハングテストに使用する .stl ファイル

https://www.thingiverse.com/thing:1564848

ThingVerse で公開されている .stl ファイルを使用します
30度から85度のオーバハングを計測できます

QIDI Print の設定

特に何もしません
Fine のデフォルト値をそのまま使います
積層ピッチやインフィルなどもデフォルトのままです

印刷時間および印刷フィラメント量

  • 印刷時間: およそ 1 時間
  • フィラメント量: 5g

普通に印刷

とりあえず何も気にせず印刷してみます
本体カバーもとりつけて状態です
通常 X-Smart で PLA を使った印刷をする場合、両サイドと上部のカバーは外して印刷します

出来上がりは以下の感じです

問題のオーバハング部分は以下の通りです
少しわかりにくいですが 40 度くらいから少しづつほつれて出てきています
55 度以上になるとかなりわかりやすいほつれになりそれが 75度くらいまで続いています
そして 80 度以降では完全にほつれてしまっています

ファンを追加してより即時冷却できるようにする

次にカバーを外し風通しを良くした後さらにサイドから扇風機を当てて冷却効率をあげます
X-Smart はビルドプレート面も温度を上げてくれるので最初のプリント部分の反り返りがしづらい製品ですが、念の為ビルドプレートにはのりを塗っています

QIDI Print のスライサの設定でファンを使った冷却の設定も変更できますが今回は敢えて物理的に冷却する方法を使ってみました
こういった方法でも硬貨があるのか検証するためです

結果は以下の通りです
正面はほとんど変わりありません
よく見ると若干文字の印字がキレイになっているレベルです

そして問題のオーバハング部分です
これはかなり効果が見られました
75 度くらいまではほぼほつれなしで印刷できているのが確認できます
80 度を超えたあたりからほつれが発生して 85度は目に見えてわかるレベルのほつれになっていました

2 つ比べた結果

右が冷却ファンなし、左が冷却ファンありです
結構違うのが確認できると思います

考察

PLA の即時冷却がオーバハングにどれくらい影響するか確認してみました
効果的にはかなりあるようで 75 度くらいまでは目立ったオーバハングなしで印刷することができました
通常オーバハングは 45 度だと言われているので 75 度にまでサポートなしで印刷でいるのはかなりのアドバンテージだと思います

ただこの条件もフィラメントや 3Dプリンタの種類によってだいぶ左右されると思います
X-Smart はミドルエンドな 3Dプリンタだと認識しているのでハイエンドモデルであればもっと急斜面でも問題ないかもしれません
逆にスペックが下がるようなプリンタであれば即時冷却しても 45 度でほつれが出る可能性もあります
このあたりはやはりご自身のプリンタを使ってテストしてみるしかないかなと思います

あとはフィラメントも多少なりと影響すると思います
PLA の場合は即時冷却しても問題ないですが ABS などはある程度温度が必要なので即時冷却をしてしまうと反り返りの可能性がかなり高くなります
また PLA フィラメント自体の素材も少なからず影響するかなと思っていて今回使用した白フィラメントよりも X-Smart の初期で付属していたオレンジ色のフィラメントのほうがオーバハングしづらかった印象があります

最後に

QIDI Tech X-Smart でオーバハングテストしてみました
即時冷却がかなり効果的だと言うことがわかりよかったです

個人的にはサポートは基本使わない方針なのでオーバハングの角度が上げられるのはモデリング時からかなり余裕を持ってモデリングできるようになると思います
スライサの設定で積層ピッチやインフィル、冷却設定を更にチューニングすれば更にオーバハングしないようなプリント設定にできるかもしれません

2020年3月19日木曜日

blender 2.82 で Extra Objects を使ってギアを簡単に作成する

概要

Extra Objects アドオンを使うと簡単にギアをモデリングすることができます
今回はインストール方法と使い方を紹介します

環境

  • macOS 10.15.3
  • blender 2.82

Extra Objets アドオンのインストール

Extra Objects のアドオンは Mesh 用と Curve 用があります
ギアを作成する場合は Mesh 用をインストールすれば OK です

Edit -> Preferences -> Add-ons -> Add Mesh: Extra Objects

ギアメッシュを追加する

Add -> Mesh -> Gears -> Gear でギアを追加できます

いろいろなパラメータがあるのでそれを変更することでいろいろな形状のギアを簡単に作成できます

Number of Teeth

歯車の数を設定できます

Radius

円の中心の丸の大きさを設定できます
大きくするほど丸の大きさが大きくなります

Width

高さを設定きます

Base

円の中心の丸の半径の大きさを設定できます
小さくするほど丸の半径が小さくなります

Dedendum

歯車の出っ張りを設定できます
値を大きくするほど丸が小さくなり歯車が外に出るようになります

Addendum

歯車の長さを設定できます
大きくするほど歯車の先が尖っていくので尖りすぎない値を設定しましょう

Pressure Angle

歯車の先の尖り具合を設定できます
Addendum で尖りすぎた場合には Pressure Angle の値を小さくすることで尖りを抑えることができます

Skewness

ギアにスクリューを設定できます
値を大きくするとギアがひねられるのが確認できると思います
プロペラみたいな形を作りたい場合に便利です

Conical angle

角度を設定することができます
歯車の大きさが広がるようなギアを作成できます

Crown

歯車だけを上下させることができます

最後に

Extra Objects を使って歯車を作成する方法を紹介しました
設定項目もシンプルなものばかりなので簡単に使えると思います

これ以外の項目は直接オブジェクトを編集するしかありません
例えば丸の部分だけ高さを変えたい場合は Extrude や Move を使う感じになります

参考サイト

2020年3月18日水曜日

Gitlab の Wiki 機能を試してみた

概要

Gitlab の wiki 機能をいろいろと試してみました
ページの作り方やサイドバーの編集方法を紹介します

環境

  • CentOS 7.7.1908
  • docker 19.03.4-rc1
  • GitLab Community Edition 12.8.7
  • Ruby 2.5.5p157
  • gollum 4.1.4

gitlab の立ち上げ

過去の記事を参考に起動しましょう

プロジェクトの作成

適当に作成しましょう

階層付きの Wiki ページの作成

Wiki ページを作成するときのタイトルに「/」を入れることで階層化することができます

特定の階層の Wiki の一覧を表示する方法はない

どうやらこの機能はないみたいです
feature request 的なのはあるのでもしかするとそのうち実装されるかもしれません
現状は wiki のページをすべて確認できるページで確認するしか方法はないようです

[all pages](pages)

_sidebar.md を編集する

Wiki のサイドバーはカスタマイズ可能です
単純に _sidebar というページを WebUI 上で作成しても良いですがせっかくなので clone してみました

  • git clone http://192.168.100.8/root/pjct.wiki.git
  • cd pjct.wiki
  • vim _sidebar.md
# Sidebar
Hello my sidebar!
  • git add .
  • git commit -m “Add custom _sidebar”
  • git push -u origin master

これでサイドバーをカスタマイズすることができます

gollum を使ってみる

内部的に Wiki は gollum という git ベースで管理できる Wiki システムで動作しています
gollum にはマクロが備わっておりそれらのマクロを gitlab 上でも使うことができます
ローカルで動作確認してから push してみましょう

まずは gollum をインストールします

  • yum install -y libicu-devel
  • gem install gollum

ローカルに clone した wiki を gollum で動作させてみましょう

  • cd pjct.wiki
  • gollum

これでローカルで wiki ページが立ち上がるので 0.0.0.0:4567 ポートにブラウザでアクセスして動作確認してみましょう

試してにマクロが使えるか確認してみます
一度 Ctrl+c で gollum を停止します

  • vim home.md
[all pages](pages)

<<Navigation("dir1 TOC", "dir1", true)>>
  • git add .
  • git commit -m “Update home”
  • gollum

これで再度ブラウザで確認すると「dir1」階層に作成した wiki ページの一覧が表示されると思います

これを使えば階層化したページの一覧表示ができそうです
ローカルで確認して問題なければ push しましょう

  • git push -u origin master

これで gitlab 側を確認すると dir1 配下のページの一覧が確認できると思ったのですがどうやら gitlab ではまだマクロに対応していないようです
https://gitlab.com/gitlab-org/gitlab/issues/25105
せっかくページの一覧を表示できると思ったのですが残念です
一応これもリクエストがあるのでそのうち実装されるかもしれません

最後に

gitlab の wiki 機能を簡単に触ってみました
ページの一覧を表示する機能はまだないようです

参考サイト

2020年3月17日火曜日

QIDI Print の個人的サポート設定メモ

概要

過去にサポート材の挙動について確認しました
経験からサポート材をうまく剥がせるように設定するためのポイントがある程度まとまったので紹介します

環境

  • macOS 10.15.3
  • QIDI Print
  • X-Smart

ポイント

  • ちゃんとサポートできているか、崩れないか
  • 剥がれやすい距離/密度になっているか

サポートライン幅

0.26mm
0.4 mm ノズルの 70% がこの値

サポートパターン

トライアングル or グリッド
斜めに印刷する場合はトライアングルが良さそう

サポート Z 距離

0.25 or 0.3 mm
できれば 0.3mm で攻めたい
オーバハングの角度がきつい場合は 0.2 mm にするのも手だが剥がしづらくなる
大きければ大きいほど剥がれやすくなる分印刷が崩れる可能性が上がる

サポート密度

8%, 10%, 15% あたり
ポイントは細かい部分がちゃんとサポートできているか
サポートする範囲が大きい部分しかない場合は 8% で OK
サポートする範囲が小さい部分がある場合は 8% だとサポートが少なくなり崩れる可能性が高くなる
小さい部分を優先して決めること
ただ 15% を超えた場合にサポート Z 距離が 0.25 mm 以下だとだいぶ剥がしづらく印象

サポートウォールライン数

0
いらない
ウォールラインと印刷物がくっついて剥がれない

サポートインタフェース

なし
いらない
サポートインタフェースと印刷物がくっついて剥がれない

プリントする前にかならずスライサでサポートの状態を確認しておくこと

パラメータを変更しては逐一確認すること
そしてフィラメントの消費量/時間、サポートの効率性/剥がれやすさのトレードオフの一番良いところを自力で探す

最後に

正直ベストな設定は造形物ごとにあると思っています
その中でポイントとなる「サポート強度」と「剥がれやすさ」のトレードオフを見つける感じかなと思います
見つけるにあたって個人的に設定が重要だと思っている項目が上記かなという感じです

2020年3月16日月曜日

blender 2.82 で簡単にネジを作成する

概要

blender 2.82 には簡単にボルトやネジ、ナットを作成するためのアドオンとして「Bolt Factory」というアドオンがあります
2.8 系であれば設定画面からアドオンを有効にするだけで使えるようになります
今回はアドオンのインストールから簡単な使い方の紹介として木ネジをモデリングしてみました

環境

  • macOS 10.15.3
  • blender 2.82
  • BoltFactory

BoltFactory アドオンのインストール

Edit -> Preferences から Add-ons から BoltFactory アドオンをインストールします

とりあえずネジを作成してみる

Add -> Mesh -> Bolt が追加になっています

するとあっという間に六角ボルトが作成されます

木ネジっぽくしてみる

木材などに打ち込む木ネジっぽくしてみます

Bolt を追加するとオプションがいろいろと表示されるのでそこをいじります

  • Bit Type・・・PHILLIPS
    • Bit Depth (ネジ穴の深さを設定します)・・・1.1m
    • Bit Dia (ネジ穴の大きさを設定します)・・・1.8m
  • Head (ネジ山の形)・・・COUNTER SINK
    • Head Dia (ネジ山の高さ)・・・5m
  • Shank Length (柄の高さ)・・・2.0m
  • Shank Dia (柄の深さ)・・・2.8m
  • Thread Length (ネジ部分の高さ)・・・10.0m
  • Major Dia (ネジ部分の太さ)・・・2.8m
  • Minor Dia (ネジの芯の部分の太さ)・・・1.7m
  • Pitch (ネジのスクリューのピッチ)・・・0.66m
  • Crest Percent (ネジのスクリューの鋭さ)・・・1
  • Root Percent (ネジのスクリューの幅)・・・60
  • Div count (滑らかさ)・・・68

Shank はネジの下にある柄のような部分です
とりあえず上記の設定で以下のような木ネジになりました

微調整する

あとは直接オブジェクトを編集して微調整します
例えば先端部分を尖らせたい場合は

  • X-Ray にする
  • 底の部分の頂点をすべて選択する

  • Alt + m -> At Center

  • g (移動)
  • z (Z 軸のみ移動)
  • 上に伸ばす

という感じでできます
一応ネジ作成時のピッチを上げても先端が尖りますがネジ部の山の数が減ってしまうので山の数を減らさずに尖らせたい場合は直接編集するしかないかなと思います

もしくはピッチを上げて Thread Length も伸ばしつつオブジェクト全体の長さを長くしても OK かなと思います

最後に

BoltFactory で木ネジをモデリングしてみました
自分でスクリューモディファイアを使ってネジを作成することもできますが結構大変です
2.8 系であればアドオンも簡単にインストールできるので是非使ってみてください

参考サイト