0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ポイントスケールの定規PDFを作る

Posted at

はじめに

PDFの内部単位はポイント(DTPポイント:1/72 inch)です。

PDF帳票の生成や解析などをするときに、ポイント単位の定規があると便利です。

売ってないかなと思って探してみましたが、見つけるのが面倒なので定規PDFを生成してプリントアウトすることにしました。

環境

Python3 + reportlab を選びました。

くふうしたところ

A4の長辺方向は297mmですが、できれば300mm欲しいところです。

そこで、定規の絵を斜めに描くことで、30cmの定規を作ります。

折って両面使えるようにします。

4辺使えるようになるので、おまけで mm と inch のスケールも描きます。

換算表としても使えますね。

12inch(約305mm) がギリギリ収まるのでその長さにします。

斜めだと折るときにズレやすいので、目印も描きます。

プログラム

createPointRulerPdf.py
# 
# ポイントスケールの定規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では画像以外は置けません。

コレを必要としている方は上記プログラムを動かせると思うので、作ってみてください。

一応、画像だけ置いときます。

PointRuler.png

おわりに

ポイントスケールの定規PDFを作ってみました。

間取り図面の縮尺が1/60だったりします。レイアウトを検討するにあたり三角スケールを買いたいところですが、使用頻度を考えると地味に高いです。

このプログラムを応用すれば、お好みの尺度の定規が作れますね。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?