Appearance
式計算 自作計算式の作り方(jwf_calc.dat 編集)
このページでできるようになること
Jw_cadの「式計算」コマンドに 自作の計算式 を追加できるようになります。KEISAN1.JWM〜KEISAN9.JWM のテキストファイルを編集して、変数・input文・if文・goto文・度分秒指定・小数桁指定 を使った計算ロジックを記述できるようになります。既製の4式(日影倍率・ヘロン公式・三斜面積計算・RC断面算定)に加えて、社内で頻出する独自計算(容積率、建ぺい率、構造概算、配管圧力損失など)をワンクリックで実行できる環境を整えられます。
背景: 自作計算式はテキストエディタ(メモ帳・VSCode・サクラエディタ等)で書ける 超シンプルな専用文法 です。プログラミング経験がなくても、変数代入・入力ダイアログ・条件分岐・繰り返しの基本要素だけで実用的な計算ツールが作れます。
要確認: この記事のタイトルに含まれる「jwf_calc.dat」は別資料での慣用表記。Jw_cad の式計算が実際に参照するのは
KEISAN1.JWM〜KEISAN9.JWMファイル(s-projects記載)。実機で確認後、整合します。
このコマンドで扱う対象
自作計算式に関連する要素を整理します。
| 要素 | 役割 |
|---|---|
KEISAN1.JWM〜KEISAN9.JWM | 計算式を記述するファイル(初期は4個) |
KEISAN.JWM | コントロールバーに表示する項目名一覧 |
| 変数(A〜Z, $) | 数値を保持する箱 |
| 関数(p, q, s, c, i 等) | 円周率・ルート・三角関数などの定数・関数 |
| input文 | 数値入力ダイアログを表示して値を取得 |
| if文 | 条件分岐 |
| goto文 / ラベル | 行ジャンプ |
| 度分秒指定 / 小数桁指定 | 出力の表示形式制御 |
委譲: 既製の4式(日影倍率・ヘロン公式・三斜面積計算・RC断面算定)の使い方 → 式計算(日影倍率・ヘロン公式・三斜面積・RC断面算定) ※準備中(並行執筆中)。外部エディタの設定変更(メモ帳→VSCode等への切替) → 基本設定 一般(1) ※準備中。
計算式を記述するファイル
注意:
KEISAN.JWM/KEISAN1.JWM〜KEISAN9.JWMの編集を行う前に、必ず以下の 3 ステップ安全手順 を踏んでください:
- コピー退避:
C:\JWWフォルダ内の対象ファイルを別名でコピーバックアップ(例:KEISAN1.JWM→KEISAN1_backup_2026-05-09.JWM)。C:\JWW全体のバックアップが望ましい- 検証: バックアップを別場所に置いた状態で、編集後の計算式が Jw_cad の式計算コマンドから期待どおり動くかを検証(バックアップから戻せる前提を作る)
- 対処: 上記2ステップを踏んだ上で、本記事の編集手順を実行
JWMファイルを直接編集して保存すると、既定の4式(日影倍率・ヘロン公式・三斜面積・RC断面算定)の挙動を破壊する可能性があります。1行最大80バイト・行頭
#の注釈扱いといった文法に違反すると式計算が起動しなくなることもあり、原本に対して直接実行すると 永続的損失 につながります。
計算式は KEISAN1.JWM〜KEISAN9.JWM という9個のファイルに記述します。インストール時に変更していなければ C:\JWW フォルダにあります(初期状態では KEISAN1.JWM〜KEISAN4.JWM の4個 が存在)。
| ファイル | 既定の内容 |
|---|---|
| KEISAN1.JWM | 日影倍率 |
| KEISAN2.JWM | ヘロン公式 |
| KEISAN3.JWM | 三斜面積計算 |
| KEISAN4.JWM | RC 断面算定 |
| KEISAN5.JWM〜KEISAN9.JWM | 自作で追加可能(最大9個まで) |
拡張子は .JWM ですが、メモ帳などのテキストエディタで普通に開いて編集 できます。
コントロールバーの項目名は KEISAN.JWM の1行目
式計算コマンドのコントロールバーに表示される項目名(「日影倍率」「ヘロン公式」「三斜面積計算」「RC 断面算定」)は、KEISAN.JWM の1行目 の |(縦棒)で挟まれた文字列で決まります。
|日影倍率|ヘロン公式|三斜面積計算|RC 断面算定|最大 9項目まで表示可能 で、各項目は KEISAN1.JWM〜KEISAN9.JWM のファイルに対応します。
Tips: コントロールバーの右にある「0」ボタンを左クリックすると、別フォルダの
KEISAN.JWMを選択するダイアログが開きます。1フォルダにつき9個まで ですが、別フォルダに別のKEISAN.JWMセットを置けば 10個以上の計算式を運用 できます。
画像準備中 — コントロールバー右の「0」ボタンと別フォルダ選択ダイアログ
ショートカットでファイルを直接編集
- Shift + Ctrl + 「0」を左クリック → 現在のフォルダ内の
KEISAN.JWMを外部エディタで開く - Shift + Ctrl + 項目名(例: 日影倍率)を左クリック → 対応するファイル(KEISAN1〜9.JWM)を外部エディタで開く
委譲: 既定の外部エディタ(メモ帳)を VSCode・サクラエディタ等に変更したい場合は → 基本設定 一般(1) ※準備中
記述方法全般のルール
| 項目 | ルール |
|---|---|
| 1行の最大文字数 | 80バイト まで |
| コメント行 | 行頭に # を記述すると、その行は注釈扱い(実行されない) |
| 計算式の終了 | e; で計算式の終わりを指定 |
| 文字エンコード | テキスト形式(メモ帳デフォルト) |
注意: 行頭の
#は 注釈扱いだが例外あり。「項目選択の設定」(後述)で#hm#:1〜#:9などは 意味のある記述 として扱われます。
1行目の記述(2形式)
ファイルの 1行目 は、以下の 2つの形式のいずれか で書きます。
形式1: #注釈文 形式(数値選択型)
1行目を # で始まる注釈文 にすると、ファイル実行時に 数値選択の状態 で開始します。注釈文は数値選択時のメッセージとして表示されます。
#3辺の長さを選択してください
% 3;
@ 0;
(以下、計算ロジック)
e;% 3;→ 選択する数値の数(0〜10)@ 0;→ 読込順序(0=縦方向優先 / 1=横方向優先)
% 0; にすると数値選択は行われず、後述の input文 で値を取得する設計になります。
形式2: #hm メッセージ |項目1|項目2|・・・ 形式(項目選択型)
1行目を #hm で始め、| で項目名を区切ると、コントロールバーに項目選択ボタンが現れます。
#hm 計算種別を選んでください |項目1|項目2|項目3|コントロールバーには 項目1 / 項目2 / 項目3 のボタンが表示され、ユーザーが項目を選んだ後に数値選択へ進む設計になります。
項目選択時の追加設定(#:N 系)
項目を選んだ後、項目ごとに別の挙動 をさせたい場合は以下を記述します。
#:1数値を選択
#:1% 2;
#:1@ 0;
#:2数値を選択
#:2% 4;
#:2@ 1;#:1文字列→ 項目1で数値選択時に表示するメッセージ#:1% 2;→ 項目1で選択する数値の数を2にする#:1@ 0;→ 項目1で選択数値の読込順序を縦方向優先にする
選択した項目番号は 変数 Z に自動代入されます(計算結果には表示されません)。
背景: 既製の
KEISAN4.JWM(RC断面算定)が項目選択型の典型例です。「①柱【長期】」「②柱<短期>」「③梁【長期】」「④梁<短期>」が項目1〜4に対応します。
数値選択で取得した値はどこに入る?
数値選択(% N;)または input文で取得した値は、変数 A から順番にアルファベット順に代入 されます。
| 取得順 | 代入先 |
|---|---|
| 1番目 | A |
| 2番目 | B |
| 3番目 | C |
| ... | ... |
| 26番目 | Z |
Tips: 「3辺を選択」する設計なら、A=辺1、B=辺2、C=辺3 が自動的に入ります。
% 3;の数だけ A から順に埋まると考えれば直感的です。
変数
代入の構文
変数=計算式;右辺の計算結果が左辺の変数に代入されます。文末は ;(セミコロン) で締めます。
使える変数名
| 文字 | 用途 |
|---|---|
| A〜Z | 大文字26文字 |
| $ | 特殊変数(計算結果の補助表示用) |
例
S=A+B+C;
H=q(S*(S-A)*(S-B)*(S-C));S に3辺の合計 / q() はルート関数。H に三角形の面積(ヘロン公式)が入ります。
使える定数・関数
| 機能 | 記号 | 使用例 |
|---|---|---|
| 円周率 π | p | 3.141593(定数) |
| 整数化(int) | i | i(A) |
| 整数の余り | % | A%B |
| sin(正弦) | s | s(A) (Aの単位は度) |
| cos(余弦) | c | c(A) (Aの単位は度) |
| べき乗 | ^ | A^B |
| ルート | q | q(A) (A ≧ 0) |
| atan(逆正接) | // または a | a(A) (結果の単位は度) |
| 常用対数 | l | l(A) (A > 0) |
| 自然対数 | n | n(A) (A > 0) |
| eのA乗 | j | j(A) |
| 絶対値 | b | b(A) |
| 加減乗除 | + - * / | A+B-C*D/E |
| 括弧計算 | () または [] | A*(B+C) |
背景: 三角関数の単位は 度(degree) で、ラジアンではありません。逆三角関数(atan)の結果も 度 で返ります。座標ファイルの
sc/se/so/sg(ソリッド系)はラジアンを使うので、式計算とは単位系が異なる 点に注意してください。
input文(数値入力ダイアログ)
構文
input 変数 "メッセージ";input文が実行されると 数値入力ダイアログ が表示され、ユーザーが入力した値が指定変数に代入されます。"〜" で挟んだ文字列がダイアログのプロンプトとして表示されます。
例
input D "緯度を入力してください = ";ダイアログに「緯度を入力してください = 」と表示され、入力値が変数 D に入ります。
初期値の設定
input文で代入される変数に 0以外の値が事前設定 されていると、その値が ダイアログの初期値として表示 されます。
D=35;
input D "緯度 = ";→ ダイアログ初期値が 35(東京の緯度)として表示され、ユーザーは変更が必要なときだけ書き換えます。
Tips: 「ほとんど同じ値で時々変えたい」設計には、初期値設定 → input のパターンが便利です。
if文(条件分岐)
構文
if( 変数 比較演算子 変数 )変数=計算式;if文の中で使えるのは 変数・計算式・定数・比較演算子 のみです。
比較演算子
| 演算子 | 意味 |
|---|---|
< | 未満 |
> | より大きい |
= | 等しい |
<= | 以下 |
>= | 以上 |
<> | 等しくない |
例1: 単純条件
if( A<B )A=A*10;「AがBより小さい場合、A=A*10 を実行する」。
例2: 入れ子条件
if( A<B )if( A>C )A=A*10;「AがBより小さく、かつAがCより大きい場合、A=A*10 を実行する」。
Tips: if文は then 部分が1文だけ の構造です。複数文を実行したい場合は、goto文 + ラベル で分岐先にジャンプさせます。
goto文 と ラベル
構文
goto ラベル;ラベルは 半角英数字1字(0〜9, A〜Z, a〜z)が使えます。
ラベルの記述
行頭に < + ラベル文字 で記述します。< 以降の文字(同じ行内)は 無視 されます。
<1>
(処理)
<2>
(処理)例の <1> の > は省略可能(s-projectsはコメント記号として > を併用しているが、Jw_cad は < と1文字だけを認識)。
例: if文 + goto文
<1
input A "Aを入力 = ";
input B "Bを入力 = ";
if( A=B )goto 2;
if( A>B )goto 1;
goto 3;
<2
A=A*10;
goto 3;
<3
e;- A==B なら ラベル2 へジャンプ → A を10倍にして ラベル3 へ
- A>B なら ラベル1 へ戻る(最初の入力からやり直し)
- それ以外は ラベル3 へ → 終了
背景: goto文はプログラミング言語では避けられがちですが、式計算の文法では 複数文の条件分岐を実現する基本手段 になります。短い計算式なら可読性に問題は出ません。
計算結果の表示
表示される行
「左辺にある変数の最後の行」のものが計算結果として表示されます。
A=10;
B=20;
C=A+B;
e;→ 最後に左辺に出てきた C(=30)が結果表示されます。
$ 変数の併用
左辺に $ を使うと、その値も計算結果として表示されます。
A=10;
$=A*2;
B=A+$;
e;→ B(最後の左辺変数)と $(=20)の 2つが結果表示 されます。
度分秒の指定
角度を 度・分・秒 形式で表示するには、変数名に続けて & または % を付けます。
| 記号 | 意味 |
|---|---|
& | 秒の小数点以下を 1桁表示 |
% | 秒の小数点以下を 非表示 |
&0 または %0 | 分・秒が10未満のときに小数第2位まで0を表示 |
例
A%0=A;→ 変数 A を「秒小数非表示+0埋め」形式の度分秒で表示。
Tips: 角度を計算する自作式(測量・天空率関連)では、結果を度分秒で見たい場面が多いです。最後の計算結果行の変数名に
&%&0%0を付与するだけで OK。
小数点以下の桁数指定
変数名に続けて 桁数指定文字 を付けると、計算結果として表示する小数点以下の桁数を制御できます。度分秒指定との併用は不可 です。
構文
変数 + 1文字目(桁数)+ 2文字目(丸め方)| 1文字目(桁数) | 内容 |
|---|---|
| 0 / 1 / 2 / 3 | 小数点以下0〜3桁表示 |
| 2文字目(丸め方) | 内容 |
|---|---|
| 0 | 0表示 + 四捨五入 |
| 1 | 0表示 + 切り捨て |
| 2 | 0表示 + 切り上げ |
| a | 0非表示 + 四捨五入 |
| b | 0非表示 + 切り捨て |
| c | 0非表示 + 切り上げ |
例
| 指定 | 内容 |
|---|---|
変数30 | 小数点以下3桁、0表示、四捨五入 |
変数31 | 小数点以下3桁、0表示、切り捨て |
変数32 | 小数点以下3桁、0表示、切り上げ |
変数2a | 小数点以下2桁、0非表示、四捨五入 |
変数2b | 小数点以下2桁、0非表示、切り捨て |
変数2c | 小数点以下2桁、0非表示、切り上げ |
無指定の場合は 小数点以下6桁 まで表示されます。
Tips: 求積図のように 小数3桁切り捨て が必要な場面では
変数31形式が直接使えます。
単位等の指定
構文
A="(m)";
A=A+B"(m)";
A=""底辺=";
A=""";| 記述 | 意味 |
|---|---|
A="(m)"; | 値の後に「(m)」を追加 |
A=A+B"(m)"; | 計算結果の値の後に「(m)」を追加 |
A=""底辺="; | 文字列の後に値を追加(「底辺=値」と表示) |
A="""; | 表示文字をクリア |
制約
- 表示できる文字は 10バイト以内
- 「
"」を表示したい場合は"¥と記述 - 「
¥」を表示したい場合は¥¥と記述
実行の中止
!"メッセージ";" で挟んだメッセージを表示し、計算式の実行を中止 して数値選択状態に戻ります。
| 制約 | 内容 |
|---|---|
| 表示できる文字 | 60バイト以内 |
「"」を表示 | "¥ |
「¥」を表示 | ¥¥ |
例: 入力チェック
input A "辺の長さ = ";
if( A<=0 )!"辺の長さは正の値を入力してください";→ A が0以下なら、エラーメッセージを出して中止。
派生パターン
パターンA: シンプルな数値選択型(容積率)
KEISAN5.JWM を作成、3つの数値(敷地面積・延床面積・指定容積率)を選択して容積率と適否を判定する例。
#敷地面積、延床面積、指定容積率を選択してください
% 3;
@ 0;
R=B/A*100;
J=0;
if( R<=C )J=1;
e;- A=敷地面積、B=延床面積、C=指定容積率(%)
- R=実容積率、J=適否(1=適合、0=不適合)
パターンB: input文だけで完結(建ぺい率)
KEISAN6.JWM を作成、図面を選ばずに input文だけで計算する例。
#建ぺい率の試算
% 0;
input S "敷地面積(m2) = ";
input B "建築面積(m2) = ";
R2=B/S*100;
e;% 0;で数値選択を無効化- input文で値を取得
- 結果 R は小数2桁で表示
パターンC: 項目選択型(複数の構造概算)
KEISAN7.JWM を作成、項目を選んでから別の計算をする設計例。
#hm 構造種別を選択 |鉄骨|RC|木造|
#:1鉄骨概算重量
#:1% 2;
#:1@ 0;
#:2RC概算重量
#:2% 2;
#:2@ 0;
#:3木造概算重量
#:3% 2;
#:3@ 0;
if( Z=1 )W=A*B*0.08;
if( Z=2 )W=A*B*0.18;
if( Z=3 )W=A*B*0.04;
e;- 項目選択結果が変数 Z に入る
- A=床面積、B=階数
- W=概算重量(種別ごとの係数)
パターンD: ループ的な再入力
input文 + if文 + goto文の組み合わせで「正の値を入力するまで繰り返し」を実現する例。
<1
input A "正の値を入力 = ";
if( A<=0 )goto 1;
B=A*A;
e;- A が0以下ならラベル1へ戻り、再入力
- 正の値が入ったら B=A^2 を計算して終了
実務での使い方 ★PERSC独自
容積率・建ぺい率の即時チェック
確認申請の意匠設計で頻出する 容積率・建ぺい率 の計算を自作式化すれば、敷地面積・建築面積を打ち込むだけで適否判定までを1クリックで済ませられます。地区毎の指定容積率を変数に入れる設計にすれば、複数物件を扱っても柔軟に対応できます。
構造仮定の重量試算
意匠設計の初期段階で「鉄骨ならXX t、RCならYY t」というおおまかな建物重量を試算する自作式を作っておくと、構造設計者との打合せの準備が短縮します。係数は社内基準に合わせて調整できます。
配管・ダクトの圧力損失(設備)
設備設計で頻出する 配管圧力損失(h=λ・L/D・v²/2g) や ダクト摩擦損失 を自作式化すれば、配管径・流速を入力するだけで損失計算が完了します。設備担当者がよく使う計算ほど自作式の効果が大きいです。
法令ベース計算(北側斜線・道路斜線)
地域・敷地条件・建物高さを入力すると 斜線制限の適否 を返す自作式は、ボリュームスタディの初期判断を高速化します。
自作式ファイルの社内共有
KEISAN5.JWM〜KEISAN9.JWM は テキストファイル なので、Git/SVN・社内共有フォルダで簡単に管理できます。バージョン管理ツールに乗せれば、誰がいつどの式を変更したかが追跡できます。
PERSCの推奨: 社内で運用する場合、
KEISAN.JWMのフォーマット を統一しておくと管理が楽になります。例えば「ファイルの2行目に# 作成者・日付・バージョンを必ず記述する」「変数の意味を# A=敷地面積(m2)のようにコメント化する」といったルールを社内ガイドにまとめると、メンテナンス性が上がります。
つまずきポイント・対処 ★PERSC独自
Q: 自作式が式計算コマンドに表示されない
→ KEISAN.JWM の1行目 に項目名を追加していますか? |項目1|項目2|項目3| のように | で囲んで列挙する必要があります。また、対応するファイル(KEISAN5.JWM など)を作成していますか?
Q: ファイルを編集したのに反映されない
→ Jw_cadを再起動 すると確実に反映されます。式計算コマンドを実行中の場合は、一度コマンドを終了してから再起動してください。
Q: 計算結果が表示されない
→ e;(実行終了) を最後に記述していますか? e; がないと計算式が完結せず、結果も出ません。
Q: 計算結果がおかしい / 値が想定と違う
→ 変数の代入順序 を確認してください。式計算では 左辺の変数の最後 が結果として表示されます。途中で別の変数に代入してから最終結果に戻すような順序ミスがないか確認しましょう。
Q: 三角関数の結果が想定と違う
→ Jw_cadの三角関数(s, c, a)は 単位が「度」 です。ラジアンで考えていると桁がおかしくなります。座標ファイルのソリッド系(sc, se, so, sg)はラジアンなので 単位系が違う ことに注意してください。
Q: 度分秒指定と小数桁指定が同時にできない
→ 仕様上 併用不可 です。角度なら度分秒、長さ・面積なら小数桁、と用途で選び分けてください。
Q: 1行が長くなりすぎてエラー
→ 1行最大80バイト の制限があります。長い計算は 複数行に分けて中間変数を使う とクリアできます。
(NG: 1行が長い)
R=q((A+B)*(B+C)*(C+A)/(A*B*C));
(OK: 中間変数で分割)
S=A*B*C;
T=(A+B)*(B+C)*(C+A);
R=q(T/S);Q: テキストエディタで開けない
→ 拡張子 .JWM は通常のテキスト形式です。メモ帳・VSCode・サクラエディタ などで「ファイル」→「開く」から、ファイルの種類を「すべてのファイル」にして選んでください。Shift + Ctrl + 項目名 での起動が最も簡単です。
Q: 文法エラーがどこにあるかわからない
→ Jw_cadの式計算は 詳細なエラーメッセージを出さない ため、目視でのチェックが基本です。原因切り分けには「少しずつ実装して動作確認」する開発スタイルが有効です。最初は2〜3行で動かし、徐々に if文・goto文を追加していきます。
Q: 既製の KEISAN1.JWM〜KEISAN4.JWM をいじってしまった
→ 編集前に バックアップを取る のが原則です。バックアップがない場合は、Jw_cad を一度アンインストール → 再インストールで初期状態に戻せます(C:\JWW\ フォルダの中身を退避してから実施)。アンインストール詳細は → インストール・起動・終了・アンインストール
関連項目
- 式計算(日影倍率・ヘロン公式・三斜面積・RC断面算定) ※準備中 — 既製の4式の使い方
- 表計算(A群×B群・範囲内合計の一括計算) ※準備中 — 四則演算の一括処理
- 座標ファイル(読込・書込) — 同じテキスト編集系
- 座標ファイルの書式仕様 ※準備中 — テキスト書式の参考
- 基本設定 一般(1) ※準備中 — 外部エディタの設定変更
- インストール・起動・終了・アンインストール — 初期状態へのリセット手順
- 面積測定(複雑形状・円弧含む) — 計算前の面積取得
- 外部変形のインストール ※準備中 — より複雑な計算は外部変形へ
まとめ
- 自作計算式は
KEISAN1.JWM〜KEISAN9.JWM(C:\JWW フォルダ)に記述 - 初期は4ファイル、自作で 最大9個まで拡張可能
- コントロールバー項目名は
KEISAN.JWMの1行目 で定義 - ファイル編集ショートカット: Shift + Ctrl + 項目名
- 1行最大 80バイト、
#で始まる行は注釈、e;で計算終了 - 1行目は
#注釈文(数値選択型) か#hm メッセージ |項目名|...(項目選択型) の2形式 - 数値は変数 A〜Z にアルファベット順に代入、項目選択結果は Z に代入
- 関数:
p(π)/q(√)/s c a(sin/cos/atan、単位は度)/i b j n l ^ % - input文・if文・goto文・ラベルで対話的・条件分岐・繰り返しが可能
- 度分秒指定(
&%)と小数桁指定(302a等)で出力形式を制御 - 単位指定(
="(m)";)と実行中止(!"メッセージ")で実用性を高める - 容積率・建ぺい率・構造概算・配管圧力損失など 社内頻出計算の自動化 に強力