PliersCover

pliers cover inkscape extension

PliersCover Inkscape extension

工具カバーのレザークラフト用図面を自動作成 (Inkscape extension)

工具の写真と重ねる

概要

ラジオペンチやニッパーなどの工具カバーのレザークラフト用図面を自動作成する Inkscapeエクステンション(拡張機能)です。

各部分のサイズを入力すると、 レーザーカッターなどで利用できる図面を自動作成します。

(もちろん、紙に印刷して、従来通りの手作業も可能。)

ライブビュー機能を利用すると、 画面上で確認しながらサイズを調整できます。

針穴は菱目で、微調整が可能です。

針穴の位置は、必ず角に来るように自動的に調整されます。

このツールで作成した図面を Inkscapeで編集することもできます。

JavaScript版もあります。

1. インストール

  1. Inkscapeのインストール
  2. ダウンロード
  3. ファイルのコピー

1.1 Inkscape

Inkscapeの拡張機能なので、Inkscapeが必要です。

まだ、インストールされていない場合は、 下記公式サイトを参考にインストールして下さい。

=> Inkscape 公式サイト

1.2 ダウンロード

サイトのURL

https://github.com/ytani01/PliersCover/

ZIP形式のファイルをダウンロードして展開するか、 gitに慣れている方は、慣れた方法でリポジトリをクローンしてください。

1.2.1 ZIPファイルをダウンロードして展開する方法

1.2.2 Gitリポジトリをクローン(clone)する方法

$ git clone https://github.com/ytani01/PlierCover.git
$ git clone git@github.com:ytani01/PlierCover.git

1.3 ファイルのコピー

以下の2つのファイルを所定のフォルダにコピーする。

コピーするファイル

OSにあったやり方でコピーしてください。

1.3.1 Linux

コピー先ディレクトリ(フォルダ)

setup.sh で自動的に上記ディレクトにコピーすることができます。

$ ./setup-linux.sh

1.3.2 Mac

linuxと同じ??

1.3.3 Windows

コピー先フォルダ

2. 使い方

[拡張(extensions, エクステンション)]-[ytani]-[工具カバー]

menu

Inkscape extension: 工具カバー

2.1 注意・コツなど

2.2 起動方法について

Inkscapeの--verbオプションで idを指定すると、 Inkscape起動と同時にこの拡張機能を開くこともでき、 メニューから探す手間を省けます。

本拡張機能のID: jp.tanibayashi.yoichi.ytani.pliers_cover

2.2.1 Linux のコマンドラインで起動する場合

$ inkscape --verb jp.tanibayashi.yoichi.ytani.pliers_cover

2.2.2 Windows のショートカットに登録する方法

注意! 元のショートカットを変更せずに、コピーしてから変更しましょう。

  1. Inkscapeのショートカットを(お好きな方法で)コピー

  2. 右クリック → [プロパティ]

  3. [ショートカット]-[リンク先] のコマンド名の後にオプションを追加

--verb jp.tanibayashi.yoichi.ytani.pliers_cover

Inkscapeショートカットのプロパティ

A. Memo

A.1 SVG パスのコマンド

(大文字: 絶対座標、小文字: 相対座標)

M: moveto (始点座標)
L: lineto
  H: 水平
  V: 垂直
C: curveto: "{C|c} c1x,c1y c2x,c2y x,y"
  (c1x, c1y), (c2x, c2y): 制御点
  x,y: 終点

  * 正円(半円)の場合、制御点までの距離は、直径の約0,75倍(?)
Z: closepath
ex: d="M 50,60 H 60 l 20,50 Z"

A.2 Inkscape extension 描画

基本書式

import inkex
import simplestyle

inkex.localize()

class Foo(inkex.Effect):
    def __init__(self):
	    inkex.Effect.__init__(self)
		self.OptionParser.add_option("--opt", action="store", type="float",dest="opt", help="...")
		

    def effect(self):
	    :
		

現在のレイヤーに、objectを描画。

ex.1

parent = self.current_layer
style = { ... }
attribute = { ... }
object = inkex.etree.SubElement(parent,
	inkex.addNS('rect', 'svg'),
	attribute)

style: 線のスタイル

ex.1

style = {
  'stroke': '#000000',
  'stroke-width': '0.2',
  'fill': 'none'
}

attributes: 座標、サイズ

ex.1: rect

attribs_rect = {
  'style': simplestyle.formatStyle(style),
  'width': '30',
  'height': '20',
  'x': '100',
  'y': '200'
}

ex.2: circle

attribs_circle = {
  'style': simplestyle.formatStyle(style),
  'r': '100',
  'cx': '150',
  'cy': '200'
}

ex.3: path

attribs_path = {
  'style': simplestyle.formatStyle(style),
  'd': 'M 50,60 H 60 l 20,50 Z'
}

B. 参考