はじめに
PDFの内部単位はポイント(DTPポイント:1/72 inch)です。
PDF帳票の生成や解析などをするときに、ポイント単位の定規があると便利です。
売ってないかなと思って探してみましたが、見つけるのが面倒なので定規PDFを生成してプリントアウトすることにしました。
環境
Python3 + reportlab を選びました。
くふうしたところ
A4の長辺方向は297mmですが、できれば300mm欲しいところです。
そこで、定規の絵を斜めに描くことで、30cmの定規を作ります。
折って両面使えるようにします。
4辺使えるようになるので、おまけで mm と inch のスケールも描きます。
換算表としても使えますね。
12inch(約305mm) がギリギリ収まるのでその長さにします。
斜めだと折るときにズレやすいので、目印も描きます。
プログラム
#
# ポイントスケールの定規PDFを作る
#
# Python 3 (tested 3.12.7)
# reportlab-4.2.5
#
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4, portrait
import os
# ファイル名
file = "PointRuler.pdf"
# パスをデスクトップにする
file_path = os.path.expanduser("~") + "/Desktop/" + file
# A4の新規PDFファイルを作成
page = canvas.Canvas(file_path, pagesize=portrait(A4))
# 回転など
page.rotate(-31)
page.translate(40, 82)
page.setStrokeColorRGB(0.0, 0.0, 0.0)
page.setFont("Helvetica", 9)
# 中心線
page.setLineWidth(0.1)
page.line(0,0,0,860)
w1 = 72 # 定規幅
w2 = 36 # ↑の半分
mt = 8 # テキスト位置
m1 = 5 # 目盛(短)
m2 = 10 # 目盛(長)
# 主目盛
page.setLineWidth(0.5)
# 10ptごと
for i in range(0,860+1,10) :
page.line(-w2,i,w2,i)
page.drawString(mt, i, str(i))
page.drawRightString(-mt, i, str(i))
# 10mmごと
for i in range(0,300+1,10) :
y = i*72/25.4
page.line(w2,y,w1,y)
page.drawRightString(w1-mt, y, str(i))
# 1inchごと
for i in range(0,12+1) :
y = i*72
page.line(-w2,y,-w1,y)
page.drawString(-w1+mt, y, str(i))
# 副目盛
page.setLineWidth(0.25)
# 5ptごと(5,15,25...)
for i in range(5,860,10) :
page.line(-m1,i,m1,i)
# 1mmごと
for i in range(0,305+1) :
y = i*72/25.4
page.line(w1-m1,y,w1,y)
# 5mmごと(5,15,25...)
for i in range(5,305+1,10) :
y = i*72/25.4
page.line(w1-m2,y,w1,y)
# 1inchごと
for i in range(1,120) :
y = i*7.2
page.line(-w1+m1,y,-w1,y)
# 5inchごと(5,15,25...)
for i in range(5,120,5) :
y = i*7.2
page.line(-w1+m2,y,-w1,y)
# 折り曲げ目印
y = 430
a = 300
b = 30
page.line(-a-b,y,-a+b,y)
page.line(-a,y+b,-a,y-b)
page.line(a-b,y,a+b,y)
page.line(a,y+b,a,y-b)
# 保存
page.save()
キャンバスをまるごと斜めにしているので、定規を描画するところでは斜めを意識せず描画できます。
できあがり
完成PDFを添付しようと思いましたが、Qiitaでは画像以外は置けません。
コレを必要としている方は上記プログラムを動かせると思うので、作ってみてください。
一応、画像だけ置いときます。
おわりに
ポイントスケールの定規PDFを作ってみました。
間取り図面の縮尺が1/60だったりします。レイアウトを検討するにあたり三角スケールを買いたいところですが、使用頻度を考えると地味に高いです。
このプログラムを応用すれば、お好みの尺度の定規が作れますね。