Appearance
外部変形バッチファイルのコマンド一覧
このページでできるようになること
外部変形のバッチファイル(.bat)に書く Jw_cad独自のコマンド(REM #jww REM #h1 REM #zk 等) を体系的に理解できるようになります。バッチファイルは外部変形の 起動口 として必須のファイルで、Jw_cadが情報を書き出す範囲・JWC_TEMP.TXTを置く場所・指示点入力の有無・繰り返し挙動などを すべてバッチ内のコマンドで指示 します。この記事では宣言系・データ範囲指定系・指示点系・実行制御系の4カテゴリで全コマンドを一覧化し、よく使う組み合わせと注意点までまとめます。
背景: バッチファイル冒頭の
REMは通常のWindowsバッチ文法では「コメント行(注釈)」を意味します。Jw_cadはこのREM行に続く#で始まる文字列を Jw_cad独自のディレクティブ(指示子)として読み取る 仕組みになっており、Windowsから見るとただのコメントですが、Jw_cadから見ると重要な制御命令です。この二重の意味づけを利用しているため、外部変形のバッチは Windows でも Jw_cad でもエラーなく動作します。
バッチファイルの全体像
バッチファイルの役割
外部変形における バッチファイル(.bat) は、Jw_cadと外部プログラム(exe/awk/ruby等)の橋渡しをするファイルです。s-projects解説の整理に従えば、次の3つの責務を担います。
| 責務 | 内容 |
|---|---|
| 起動口 | 外部変形の「ファイル選択」ダイアログに表示される実体 |
| 動作宣言 | Jw_cadから書き出す範囲・形式・指示点の有無を制御 |
| 外部プログラム呼出 | call 等のWindowsコマンドで実処理を委ねる |
バッチファイル選択時に「メモ」欄に出る情報
ファイル選択ダイアログでは、バッチファイル1行目に書かれた文字列 が「メモ」欄に表示されます。バッチを多数導入しているとき、外部変形の名前・用途を識別するために重要です。
三斜面積を求めて求積表を作図する
REM #jww
REM #h1
(処理)この場合、ファイル選択ダイアログに「三斜面積を求めて求積表を作図する」と表示されます。
要確認: 「メモ」欄に出る1行目の挙動は実機で確認します。
Tips: 1行目は Jw_cadが認識する宣言行ではない ため、
REM #jwwを1行目に書くと「REM #jww」と表示されてしまいます。識別性を高めるなら、1行目はバッチの目的を平文で書き、2行目にREM #jwwを置く構成が読みやすくなります。
コマンド一覧(カテゴリ別)
カテゴリ早見表
| カテゴリ | 主なコマンド | 役割 |
|---|---|---|
| 宣言系 | #jw #jww #cd | 外部変形としての認識・カレントディレクトリ設定 |
| データ範囲指定系 | #h0〜#h4 #hp #hc #ht #g0 #g1 | 何を書き出すか・選択コメント・特殊図形の扱い |
| 書き出し情報追加系 | #hf #zs #bz #gn #zz #zk #zw #zc | ファイル名・用紙寸法・属性・日影条件等の追加書出 |
| 指示点系 | #0〜#99 #1#〜#99# #1-〜#99- #1ln〜 #1ci〜 #1ch〜 | 座標・線・円・文字の指示点入力 |
| 実行制御系 | #hr #h/ #c #f #c&& #f&& #e | 繰り返し・別変形移行・起動オプション・終了 |
背景:
REMは大文字でも小文字でも認識されます(s-projects解説)。本記事では大文字REMで統一して例示します。
宣言系コマンド
REM #jw / REM #jww ── 外部変形の宣言
このコマンドが入っていないと、ファイル選択ダイアログに そのバッチファイルが一覧表示されません。外部変形バッチで最初に書く必須宣言です。
| 宣言 | 対応版 | 違い |
|---|---|---|
REM #jw | DOS版 Jw_cad | DOS版形式での書き出し |
REM #jww | Windows版 Jw_cad(現行) | フォント名・任意サイズ寸法・ブロック基準点座標・ブロック名・寸法図形データを書き出し |
REM #jwwPERSCの推奨: 現在使われているのはほぼWindows版のため、特別な理由がなければ
REM #jwwを選ぶのが基本 です。フォント名やブロック情報まで書き出されるので、外部プログラム側で自由度の高い処理が組めます。
REM #cd ── カレントディレクトリの設定
このコマンドを入れると、バッチファイルが置かれているディレクトリがカレントディレクトリ になり、JWC_TEMP.TXTもそのフォルダに作られます。
REM #jww
REM #cd指定がない場合は jw_win.exe のあるディレクトリ(通常は C:\JWW) がカレントになります。
Tips: 外部変形プログラムをフォルダ単位(例:
C:\JWW\jww\三斜計算\)で管理するならREM #cdを入れるのが定番です。これによりプログラム配布時もユーザー側の設定なしで動作するようになります。
データ範囲指定系コマンド
REM #h0 〜 REM #h4 ── データ範囲選択指定
外部変形を実行したときに、Jw_cadから外部プログラムへ渡す 図形データの範囲・選択方法 を指定します。
| 指定 | 動作 |
|---|---|
#h0 | データ選択を行わず、データの書き出しもなし(純粋に外部プログラム実行のみ) |
#h1 | 範囲内のデータのみを選択 |
#h2 | 範囲内のデータと、範囲内外にまたがる線データを選択 |
#h3 | 範囲内の文字データのみを選択 |
#h4 | データ選択を行わず、画面に映っている読取可能データを書き出す |
REM #jww
REM #h1#h1 を入れると、外部変形を起動した瞬間に作図ウィンドウが 範囲選択モード になります。
背景:
#h0〜#h4の使い分けは外部変形の用途で決まります。三斜計算なら#h1、画面全体の図形を集計するツールなら#h4、選択不要のユーティリティ(電卓系)なら#h0という具合です。
REM #hp ── 範囲選択データの基準点を強制設定
範囲選択データの基準点を 強制的に用紙左下に固定 します。座標の基準を統一したい計算系プログラムで使われます。
REM #hc ── 範囲選択時のコメント表示
範囲選択モードに入ったときに、ステータスバーに任意の文字列を表示できます。#hc の直後に スペースを入れずに メッセージを書きます。
REM #hc三斜分割した三角形を選択してくださいPERSCの推奨: ユーザーに何を選ばせるか不明だと操作が止まります。
#h1〜#h4を使うバッチには 必ず#hcを併記してメッセージを表示する 設計が親切です。
REM #ht1 〜 REM #ht40 ── 特殊図形の扱い指定
ブロック・曲線・寸法図形・ソリッドといった 特殊図形 について、消去や書き出しの挙動を細かく制御します。
| 指定 | 対象 | 動作 |
|---|---|---|
#ht1 | ブロック | 消去しない |
#ht10 | ブロック | 消去と書き出しをしない |
#ht2 | 曲線 | 消去しない |
#ht20 | 曲線 | 消去と書き出しをしない |
#ht3 | 寸法図形 | 消去しない |
#ht30 | 寸法図形 | 消去と書き出しをしない |
#ht4 | ソリッド | 消去しない |
#ht40 | ソリッド | 消去と書き出しをしない |
背景: 外部変形は通常、選択範囲内の図形を一度削除してから外部プログラムの結果を書き戻す 動作をします。このとき寸法図形やブロックを「触らせたくない」場合に
#ht3等で保護します。
REM #g0 / REM #g1 ── レイヤグループ選択範囲
| 指定 | 動作 |
|---|---|
#g0(無指定時のデフォルト) | 書込レイヤグループのみから選択 |
#g1 | 全レイヤグループから選択 |
複数レイヤグループに散らばった図形を一括処理したい場合は #g1 を指定します。
書き出し情報追加系コマンド
REM #hf ── 編集中ファイル名の書き出し
JWC_TEMP.TXT に 現在編集中のJw_cadファイル名(フルパス) を file=ファイル名 の形式で書き出します。集計・出力ツールで「どのファイルを処理したか」をログ化したい場合に使います。
REM #zs ── 用紙寸法の書き出し
用紙サイズ(mm単位)を hzs 横寸法 縦寸法 の形式で書き出します。図面サイズに応じてレイアウトを変えるツールで利用します。
REM #bz ── 図面寸法でデータ書き込み
各座標を 図面寸法(縮尺反映後の実寸) で書き出します。指定がない場合は実寸(縮尺前)で書き出されます。
REM #gn ── レイヤ状態の書き込み
レイヤグループ状態・名前、レイヤ状態・名前を書き出します。書式の詳細は 外部変形 書き込みデータ仕様 ※準備中 を参照。
REM #zz ── 属性情報の書き込み
ハッチ・図形・寸法・建具の属性情報を書き出します。z1〜z5 の属性タグで識別されます。
REM #zk ── 日影図計算の条件書き出し
日影コマンドで指定している計算条件を hzk 緯度 日赤緯 測定高 測定時間帯番号 の形式で書き出します。
hzk 36 -23.45 1.5 0| 値 | 意味 |
|---|---|
| 36 | 緯度(度) |
| -23.45 | 日赤緯(度) |
| 1.5 | 測定高(m) |
| 0 | 測定時間帯番号(0=8時〜16時、1=9時〜15時) |
背景:
#zkは日影計算系の外部変形(標準添付の日影計算外変・天空率計算等)が必要とするコマンドです。日影設定をJw_cad本体側で済ませてから外部変形を起動する流れになります。
REM #zw ── 線幅情報の書き込み
線幅の設定・変更を書き込み・読み込み対象にします。lw 線幅 の形式(1/100mm単位の整数)で書き出されます。
REM #zc ── 文字基準点の書き込み
文字基準点(0〜8の位置番号)を書き出します。cc 文字基準点位置番号 の形式です。
指示点系コマンド
外部変形プログラムの中には、範囲選択の他に「点・線・円・文字」を順番に指定させたいもの があります。たとえば三斜計算では「面積表を作図する位置」をユーザーがクリックで指示します。これらの指示点入力を制御するのが指示点系コマンドです。
REM #0 〜 REM #99 ── 指示点の指定
| 番号 | 役割 |
|---|---|
#0 | 選択した点が データの原点 になる(無指定時は範囲選択の基準点が原点) |
#1〜#99 | 選択した点の座標を hp1 x y 〜 hp99 x y の形式で書き出し |
#0 を指定したときは #hp の指定は無効になります。
指示点プロンプトのカスタマイズ
#0〜#99 の後に文字列を書くと、その文字列が 指示点選択時にステータスバーに表示 されます。
REM #1作図位置を指示してください%d を入れると番号も自動表示されます。
REM #1%d作図位置を指示してください→ 表示: No.1 作図位置を指示してください (L)free (R)Read
文字列を書かなかった場合は、デフォルトで No.1 基準点を指示してください (L)free (R)Read が表示されます。
REM #2# 〜 REM #99# ── 連続指示点の指定
末尾に # を付けると、そこまで自動的に連続して指示点を入力 させられます。表示文字列は直前の指示点と同じです。
REM #0
REM #1
REM #10#→ #0 と #1 を入力後、自動で #2〜#10 まで連続で点指示モードになります。途中で終わらせるには 「点指示終了」ボタン をクリックします。
PERSCの推奨: 多角形の頂点を任意個指示させたい場合は連続指示点が定番です。「点指示終了」ボタンを利用者が押すまで入力が続くため、可変長の入力に対応できます。
REM #1- 〜 REM #99- ── 仮線表示付きの指示点
指示点と次の指示点の間に 仮線を表示 しながら入力できます。形状を確認しながら点を打てるため、雲マークや任意多角形の入力に向きます。
REM #1-
REM #2-
REM #3仮線表示中は クロックメニュー左AM1時で「15度ごとの角度⇔任意の角度」を切替 できます。#1/ のように / を使うと、初期設定が「15度ごと」になります。
REM #1ln 〜 / #1ci 〜 / #1ch 〜 ── 線・円・文字の指示
指示点と一緒に 既存の線・円・文字を選択 させたい場合に使います。
| 指定 | 同時に選べるもの | 書き出し例 |
|---|---|---|
#1ln | 線 | hp1ln 0 0 + hhp1ln + -5 0 5 0 |
#1ci | 円・円弧 | hp1ci 10 0 + hhp1ci + ci 0 0 10 |
#1ch | 文字 | hp1ch 0 0 + hhp1ch + ch 0 0 6.5 0 "123 |
Tips: 既存図形の情報を取得して別の図形を作図するツール(例: 線の長さに合わせた寸法線作図、円の中心点に部品配置)に向いています。書き出される
hhp〜行のデータ書式は 外部変形 書き込みデータ仕様 ※準備中 で詳説します。
実行制御系コマンド
REM #hr ── 外部変形の繰り返し指定
現在の外部変形を 繰り返し実行 します。同じ処理を別の対象に何度も適用したい場合(例: 複数の三角形に対して三斜計算を連続)に使います。
REM #h/ ── 別の外部変形への移行
現在の外部変形が終わった後、別のバッチファイル に処理を引き継ぎます。
REM #h/外部変形2.BATワークフローを段階分けしたいとき(例: ①図形を整える → ②寸法を入れる)に便利です。
REM #c / REM #f ── 起動オプションの指定
実行時にユーザーへ 起動オプション(コマンドライン引数) を入力させます。最大10回まで指定できます。
| 指定 | IME |
|---|---|
#c | OFFのまま |
#f | ONにして起動 |
REM #c線色番号(1-8)を入力してください→ 入力された値が外部プログラムへ引数として渡されます。
REM #c&& / REM #f&& ── オプションの確認・追加
&& を付けると、すでに渡されているオプションの 確認・追加 ができるようになります。リトライしたい場合に有用です。
REM #e ── バッチファイルによる設定終了
バッチファイル内の Jw_cad向け設定の終了 を明示します。これ以降の REM #〜 行は無視されます。
典型的なバッチファイル構成例
例1: 範囲選択して計算結果を作図する最小構成
三斜面積を計算する外部変形
REM #jww
REM #cd
REM #h1
REM #hc三角形を範囲選択してください
REM #1作図位置を指示してください
call sansha.exe例2: 連続指示点で多角形を作図する例
任意多角形を雲マーク化
REM #jww
REM #cd
REM #1-
REM #2-
REM #99#
call cloud.exe例3: 日影計算の条件付き
日影計算外部変形
REM #jww
REM #cd
REM #h1
REM #zk
REM #1日影開始位置を指示
call shadow.exePERSCの推奨: 自作するときは 「最小構成(例1)から始めて、必要なコマンドだけを足していく」 のが安全です。
#h1#1callの3点セットがあれば、ほとんどの基本処理は組み立てられます。
実務での使い方 ★PERSC独自
既存バッチを読み解いて挙動を把握する
実務で外部変形を導入するとき、第三者が公開しているバッチを開いてREM行を読むだけで挙動が概ね分かります。READMEがない外部変形でも、バッチを開いて以下の3点を確認すれば使い方が見えてきます。
| 確認項目 | 見るべきREM行 | 分かること |
|---|---|---|
| 範囲選択は必要か | #h0〜#h4 | 起動直後に範囲選択モードに入るか |
| 指示点はいくつ必要か | #1〜#99 の数 | 範囲選択後にクリックで何点指示するか |
| 外部プログラムは何か | call 行 | 実処理を担うexe/awk/rubyの正体 |
バッチ内のメッセージ言語化
外部変形を社内で配布する場合は、#hc #1〜#99 のメッセージを 「使う人の言葉」で書き換える だけで操作の迷いが大幅に減ります。プログラム本体(exe/awk/ruby)に手を入れる必要がないため、バッチ修正のハードルは低めです。
#cd 指定の標準化
PERSC編集部では、配布する外部変形には 必ず REM #cd を入れる 運用を推奨しています。これにより:
- ユーザー側でカレントディレクトリを意識しなくて良い
- JWC_TEMP.TXTがバッチと同じフォルダに作られるため、デバッグ時にトレースしやすい
- 複数の外部変形を別フォルダで管理してもJWC_TEMP.TXTが混ざらない
バッチを「機能のフロントエンド」として使う
外部変形の真の処理(計算・作図ロジック)は exe/awk/ruby が担いますが、ユーザーから見た外部変形の使い勝手はほぼバッチが決めます。バッチを書く人=UIデザイナー、と考えると #hc #1〜#99 のメッセージ設計が重要だと分かります。
つまずきポイント・対処 ★PERSC独自
Q: ファイル選択ダイアログにバッチが表示されない
→ 1行目以外に REM #jww(または REM #jw)が入っていない可能性が最も高いです。テキストエディタでバッチを開いて確認してください。1行目に REM #jww を書いてもOK ですが、その場合「メモ」欄に「REM #jww」と表示されます。
Q: バッチを編集して保存したのに反映されない
→ メモ帳で保存したときに 拡張子が .bat.txt になっている ことがあります。エクスプローラーで「拡張子を表示する」設定にしてからファイル名を確認してください。
Q: 範囲選択モードにならない
→ REM #h1〜#h4 のいずれも書かれていない場合、範囲選択は起動しません。REM #h0 だと選択モードに入らない仕様です。図形を選ばせたいなら #h1 以上を入れてください。
Q: 指示点でメッセージが「No.1 基準点を指示してください」のままで分かりにくい
→ #1〜#99 の直後に 業務文脈に合わせたメッセージ を書きましょう。
REM #1求積表の左上位置を指示してくださいQ: call で外部プログラムを呼んだら「'xxx' は内部コマンドまたは外部コマンドとして認識されていません」
→ プログラムへのパスが通っていません。REM #cd でバッチと同じディレクトリに切り替えるか、call の引数にフルパスを書いてください。AWK/Ruby系の場合は実行環境(gawk.exe/ruby.exe)のインストールも確認します。
Q: REM #h/ で別バッチへ移行すると変な動作になる
→ 移行先のバッチが REM #jww で始まっていない、もしくは JWC_TEMP.TXT が中途半端な状態で残っている可能性があります。移行先バッチも単独で動作確認してから連結してください。
Q: #zk が効かない
→ Jw_cad本体側で 日影計算の条件設定(緯度・季節等)が未設定 だと書き出し対象がなく、hzk 行が空になります。先に「設定」→「日影」で条件を入れてから外部変形を起動してください。
Q: 連続指示点(#1#〜)で「点指示終了」ボタンが押せない
→ 連続指示点は #1#〜#99# のように 末尾に # が必須です。#1〜#99(#なし)は単発指示なので「点指示終了」ボタンは表示されません。
関連項目
- 外部変形の基本(使い方とバッチ起動) — 外部変形の概念とバッチ起動の全体像
- 外部変形プログラムの導入 — 配布物のバッチを使うための導入手順
- 外部変形 書き込みデータ仕様 ※準備中 — JWC_TEMP.TXT 書き出し形式の詳細
- 外部変形 読み込みデータ仕様 ※準備中 — JWC_TEMP.TXT 読み込み形式の詳細
- 日影図 ※準備中 —
#zkを使う標準添付外変 - 座標ファイルの書式仕様 — 図形データ書式の参考(書き込みデータと共通)
- 外部変形プログラム集 配布 ※準備中 — PERSC配布の外部変形バッチ集
まとめ
- バッチファイルは外部変形の 起動口・動作宣言・外部プログラム呼出 を担う
REM #jwwがないとファイル選択ダイアログに表示されない(最重要)- データ範囲は
#h0〜#h4で制御、選択コメントは#hcで表示 - 指示点入力は
#1〜#99、連続指示は#1#〜#99#、仮線付きは#1-〜#99- - 日影計算条件は
#zk、ファイル名書出は#hf、属性書出は#zz等の追加情報系コマンドで制御 - バッチは「使う人の言葉でメッセージを書き換える」だけで操作性が大きく上がる