AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
CAD作ろ! 印刷
一般的な印刷についての話は、プリンタ、印刷に記載しましたが、ここではサンプルプログラムに印刷の機能を入れてみます。
まず、印刷関係のダイアログ画面としては、Delphi6には2つ標準で搭載されています。
PrintDialog

PrinterSetupDialog

この画面を表示するには、このコンポーネントを貼り付けて、これのExecuteメソッドを実行します。Executeメソッドは、[OK]をクリックしたら True、[キャンセル]をクリックしたら False を返します。
ここでは、部数や部単位印刷、ページ数等は扱いませんし、用紙設定のやりやすいPrinterSetupDialogを使う事にします。
 
グラフィックを扱う印刷プログラムを作る際には、まず、冒頭の uses節に「Printers」を追加します。そして、ImageコンポーネントやPaintBoxコンポーネントのCanvasに絵を描かせるのと同様に、Printer.Canvas に絵を描かせます。但し、
  Printer.BeginDoc ;
  Printer.Canvas.○○ 〜
  Printer.EndDoc ;
という風に、BeginDoc と EndDoc で挟む必要があります。それで1頁分の印刷になります。仮に、3頁分の印刷がある場合には、
  Printer.BeginDoc ;
  (1頁目の印刷コード)
  Printer.NewPage ;
  (2頁目の印刷コード)
  Printer.NewPage ;
  (3頁目の印刷コード)
  Printer.EndDoc ;
という具合になります。
 
ImageコンポーネントやPaintBoxコンポーネントの大きさは、Widthプロパティ、Heightプロパティ、がありますが、Printerオブジェクトの場合には、PageWidthプロパティ、PageHeightプロパティ、というものがあります。これはプリンタでのドット値を示しており、現在のプリンタ設定の用紙サイズ、用紙の向き(縦・横)を反映しています。また、プリンタで印刷する際、用紙の上下左右に印刷出来ない領域(印刷マージン)がありますが、このPageWidthプロパティ、PageHeightプロパティは、この印刷マージンを差し引いた値、つまり、実際に印刷可能なプリンタのドット数を示します。
 
また、プログラムによっては、プリンタの解像度(dpi値)を知りたい場合があります。これを取得するには、WindowsAPIの機能を利用します。
  横dpi値 := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
  縦dpi値 := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
例えば、300dpiであれば「300」という整数値が返ります。dpiとは、ドット・パー・インチ、つまり、1インチ辺りのドット数を意味しています。これを利用すれば、プリンタ1ドットは何インチなのかが直ぐに分かります。
  (dpi)=(ドット)÷(インチ)
  (インチ)=(ドット)÷(dpi)
  (ドット)=(インチ)×(dpi)
インチ値をmm値にしたい場合には、25.4を掛けます。
  (mm) =(ドット)÷(dpi)× 25.4
逆に、mm値をドット値に変換したい場合には、
  (ドット)= (mm)×(dpi)÷ 25.4
となります。
 
 
CADソフトでは、図面を作図する際、用紙サイズを決めてから作業を行う場合が多いです。決めない場合でも、おおよその場合、どれくらいの用紙にどれだけの縮尺で印刷する、というようなイメージを持つ場合が多いでしょう。そこで、CAD内では、用紙サイズ等を変数に入れて保持します。それとは異なり、プリンタでは、扱える用紙の種類もありますし、プリンタで設定する用紙サイズ、というものがあります。仮に、A1横の図面を作図していて、プリンタ側でもA1の用紙を横置きに使う、という場合には良いのですが、例えばA3レーザープリンタの場合には、A3までしか使えませんので、A1のデータをそのまま印刷させると、A3用紙でははみ出してしまい、全図形の印刷が出来ません。

そのため、図面範囲をどのようにするのか、という事で、印刷オフセット量(横(X)移動分、縦(Y)移動分)、印刷倍率、の指定を行えるようにし、なおかつ、印刷プレビュー画面を作る、という手法もあります。印刷プレビュー画面は、ImageやPaintBoxのコンポーネントを1つ用意して、そこに全図形表示させるようにして、印刷オフセット量・印刷倍率を考慮するようにすれば可能です。
 
 
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
 ▲PREV
 ▼NEXT
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015 By AFsoft All Rights Reserved.