2004.01.03 更新
新規 1.2004.01.03
分割印刷
(一枚に入りきらないデータを分割して、印刷します。)
下記の値は、プロットメニューの値に依ります。
位置、尺度、回転角など(出力範囲は、BOXに固定)
回転角が90度の場合は、プリンターの可能幅、長を入れ替えて入力して下さい。
}
DEFINE Ma_splitprint
LOCAL
Memo_mgr
{プリントマネージャーの状態記憶}
LOCAL
Memo_scale
{プリント倍率の記憶}
LOCAL
Memo_source
{プリント範囲の記憶}
LOCAL
Scale
{尺度}
LOCAL
Area_x
{プリント可能幅}
LOCAL
Area_y
{プリント可能長}
LOCAL
Point01
{プリント位置入力}
LOCAL Point02
LOCAL
Boundary_l
{プリント指示左端}
LOCAL
Boundary_r
{プリント指示右端}
LOCAL
Boundary_t
{プリント指示天端}
LOCAL
Boundary_b
{プリント指示地端}
LOCAL
Printarea_l
{プリント位置左端}
LOCAL
Printarea_r
{プリント位置右端}
LOCAL
Printarea_t
{プリント位置天端}
LOCAL
Printarea_b
{プリント位置地端}
LOCAL
Mgroff
{プリントマネージャーの非表示チェッカー}
LET Memo_mgr
Nt_print_mgr_option
{プリントマネージャーのON/OFF記憶}
LET Memo_source
Sys_plot_source
{プロット範囲の記憶}
LET Memo_scale
sys_plot_plotscale
{プリント倍率の記憶}
{尺度の取得}
INQ_ENV 19
LET Scale (INQ
4)
{現在の図面尺度}
{プリンターの印字可能範囲の指示}
LOOP
READ NUMBER '** プリンターの印刷可能幅を ミリメートルで指示して下さい。**' Area_x
EXIT_IF (Area_x > 0)
END_LOOP
LOOP
READ NUMBER '** プリンターの印刷可能長を ミリメートルで指示して下さい。**' Area_y
EXIT_IF (Area_y > 0)
END_LOOP
IF (Memo_scale =
0)
{フィットなら}
Set_sys_plot_plotscale 1
END_IF
LET Area_x (Area_x / Scale /
Sys_plot_plotscale) {入力値の表示尺度とプリント倍率による補正}
LET Area_y (Area_y / Scale / Sys_plot_plotscale)
READ PNT '** 印刷範囲の最初の点を指示して下さい。**' Point01
LOOP
READ PNT '** 印刷範囲の次の点を指示して下さい。**'
RUBBER_BOX Point01 Point02
EXIT_IF (((X_OF Point01) <> (X_OF Point02)) AND
((Y_OF Point01) <>
(Y_OF Point02)))
END_LOOP
{プリント範囲の記憶}
IF ((X_OF Point01) < (X_OF Point02))
LET Boundary_l (X_OF Point01)
LET Boundary_r (X_OF Point02)
ELSE
LET Boundary_l (X_OF Point02)
LET Boundary_r (X_OF Point01)
END_IF
IF ((Y_OF Point01) > (Y_OF Point02))
LET Boundary_t (Y_OF Point01)
LET Boundary_b (Y_OF Point02)
ELSE
LET Boundary_t (Y_OF Point02)
LET Boundary_b (Y_OF Point01)
END_IF
{分割プリント}
LET Mgroff 0
LET Printarea_t Boundary_t
LET Printarea_b (Boundary_t - Area_y)
LOOP
LET Printarea_l Boundary_l
LET Printarea_r (Boundary_l + Area_x)
LOOP
IF (Mgroff =
0)
{初回なら}
Print_mgr_option_on
ELSE
Print_mgr_option_off
END_IF
Set_sys_plot_source
TWO_PTS
{プロット範囲をBOXに指定}
Set_sys_plot_source_ll
(PNT_XY Printarea_l Printarea_b) {印字範囲の左下}
Set_sys_plot_source_ur
(PNT_XY Printarea_r Printarea_t) {印字範囲の右上}
IF (Memo_scale =
0)
{フィットなら}
Set_sys_plot_plotscale 1
END_IF
TRAP_ERROR
{エラーを取得}
PLOT_STOP_ON_ERROR
ON
{プロットエラーでストップする}
Plot_start
{プロット}
Set_sys_plot_plotscale
Memo_scale
{プロット尺度の復元}
Set_sys_plot_source
Memo_source
{プロット範囲の復元}
LET Mgroff (Mgroff + 1)
LET Nt_print_mgr_option
Memo_mgr
{プリントマネージャーのON/OFF復元}
PLOT_STOP_ON_ERROR OFF
IF (CHECK_ERROR = 1)
DISPLAY ('** ' +
ERROR_STR + '**')
CHECK_ERROR
CANCEL
{取り消し}
END_IF
EXIT_IF (Boundary_r <= Printarea_r)
LET Printarea_l Printarea_r
LET Printarea_r (Printarea_l
+ Area_x)
IF (Boundary_r <
Printarea_r)
{余り部分なら}
LET Printarea_r
Boundary_r
END_IF
END_LOOP
EXIT_IF (Boundary_b >= Printarea_b)
LET Printarea_t Printarea_b
LET Printarea_b (Printarea_t - Area_y)
IF (Boundary_b >
Printarea_b)
{余り部分なら}
LET Printarea_b Boundary_b
END_IF
END_LOOP
END_DEFINE
気をつけて作りました、使用してのトラブルに責任は持てませんが、
自由にお使い下さい。(伏 見 表)