DOS版の Ver’1.56の頃からJW_CADにはお世話になっております
チャットGPTのAIにお願いして外部変形を作ってもらいました。
少し修正して何とか動くようになりました。
興味のある方はお試しください。
入力は2行ですが、ほんの数秒でスクリプトが返ってきました。
すごい時代になったものです。
Iinput
JW_CADの外部変形AWKスクリプト
傾斜した長方形を長さと幅の3点指示で外殻線とソリッド四角形+面積(m2)を画面に書き出す
ChatGPT:
#---------------------------cut---------------------------------
# 3area.awk
# JW_CAD 外部変形 AWKスクリプト
# 3点指示で傾斜した長方形を作図し、面積を m2 で表示
#
# hp1 : 長方形の1点目
# hp2 : 隣接する辺の2点目
# hp3 : 幅方向を決める点
#
# 出力: ソリッド四角形 + 外枠線 + 面積文字
BEGIN {
rn = 2 # 面積表示の小数点桁数
}
# --- 座標取得 ---
/^hp1/ { split($2,a); x1=$2; y1=$3; next }
/^hp2/ { x2=$2; y2=$3; next }
/^hp3/ { x3=$2; y3=$3; next }
END {
# ベクトル計算
vx = x2-x1; vy = y2-y1 # 辺ベクトル
wx = x3-x1; wy = y3-y1 # 幅方向指定ベクトル
# 幅方向ベクトル(直交成分)
dot = (wx*vx + wy*vy) / (vx*vx + vy*vy)
px = wx - dot*vx
py = wy - dot*vy
# 4頂点
X1 = x1; Y1 = y1
X2 = x2; Y2 = y2
X3 = x2+px; Y3 = y2+py
X4 = x1+px; Y4 = y1+py
# 面積(mm2 → m2)
area = (vx*py - vy*px)
if (area < 0) area = -area
area_m2 = area / 1e6
# 出力開始
print "hd"
# 色指定 (例: 赤系) lc10 [RGB]
print "lc 10"
# ソリッド四角形
printf("sl %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f\n", X1,Y1,X2,Y2,X3,Y3,X4,Y4)
# 外周線(ポリラインで閉合)
print "pl"
printf(" %f %f %f %f\n",X1,Y1,X2,Y2);
printf(" %f %f %f %f\n",X2,Y2,X3,Y3);
printf(" %f %f %f %f\n",X3,Y3,X4,Y4);
printf(" %f %f %f %f\n",X4,Y4,X1,Y1);
# 面積文字(重心に配置、横書き)
Cx = (X1+X2+X3+X4)/4
Cy = (Y1+Y2+Y3+Y4)/4
dx = vx
dy = vy
# 正立補正:±90°を超えたら反転
ang = atan2(dy, dx)
if (ang > 1.5708 || ang < -1.5708) {
dx = -dx
dy = -dy
}
areatxt = sprintf("%.*f m2", rn, area_m2) #少数位2桁
printf("ch %f %f %f %f \"%s\n", Cx, Cy, dx,dy, areatxt) #文字も傾斜
}
#----------------3area.bat----------cut---------------------------------
@REM 3点指示で矩形作図 面積表示 "3点矩形.bat"
@ECHO OFF
REM #jww
REM #cd
REM #h0
REM #1- 端点指示
REM #2- 長辺 端点指示
REM #3 幅 端点指示
REM #hr
REM #e
copy jwc_temp.txt temp.txt > nul
jgawk -f 3area.AWK temp.txt > jwc_temp.txt
#--------------------------------cut---------------------------------