Jw_cad 情報交換室−その3New

 JWW についての情報交換の場としてお使いください
初心者の方などのご相談は Jw_cad 相談 室−その2をご利用ください
なお、情報交換室と相談室の両方に同じ内容を投稿するのはご遠慮ください

2009年9月以前の発言過去ログのページからご覧ください。

それ以降の過去ログは消失しています。
申し訳ありませんが、復活の予定はありません。


新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム
9 / 378 ツリー    ←次へ | 前へ→

ChatGPTで外部変形スクリプト tonbo 25/10/4(土) 14:37
Re:ChatGPTで外部変形スクリプト きやま 25/10/5(日) 16:45
Re:ChatGPTで外部変形スクリプト tonbo 25/11/2(日) 19:32

ChatGPTで外部変形スクリプト
 tonbo E-MAIL  - 25/10/4(土) 14:37 -
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---------------------------------

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36@p1756027-ipxg06601niigatani.niigata.ocn.ne.jp>
・ツリー全体表示

Re:ChatGPTで外部変形スクリプト
 きやま  - 25/10/5(日) 16:45 -
ありがたく使わせていただきます。

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0@z220159.dynamic.ppp.asahi-net.or.jp>
・ツリー全体表示

Re:ChatGPTで外部変形スクリプト
 tonbo  - 25/11/2(日) 19:32 -
今度は カラー印刷にしなくても赤で印刷される 雲囲いスクリプトを AIに手伝ってもらいました。
円弧を直線に分割し ソリッド線のポリラインで書き込みます


---------------------kumo.bat----------------------------------

@REM 【 自在 雲囲い 】
@echo off
REM #jw
REM #cd
REM #hc 雲囲い
REM #1- スタートの点を指示
REM #2- 次の点を指示(⇒右回りで凸)
REM #99#
REM #hr
REM #e
copy jwc_temp.txt temp.txt > nul
jgawk -f kumo_pl.awk temp.txt > jwc_temp.txt

---------------------------cut-----------------------------


----------------------------kumo_pl.awk---------------------

# 指示点を円弧でつなぐ「雲囲い」作図スクリプト(円弧分割版)
BEGIN {
sa = 0 # 始角
ea = 180 # 終角
ratio = 1 # 偏平率
arc_div = 3 # 各指示点間を何個の円弧でつなぐか
div = 18 # 各円弧の分割数
}
# hp座標を読み込み
/^hp[0-9]+/ {
n++
x[n] = $2
y[n] = $3
}
END {
pi = atan2(0,-1)
if (n < 2) exit
print "lc10 255"
print "pl"
for (i = 1; i <= n; i++) {
j = (i < n) ? i + 1 : 1 # 次の点(最後は1に戻る)
dx = x[j] - x[i]
dy = y[j] - y[i]
dist = sqrt(dx*dx + dy*dy)
ang = atan2(dy, dx) * 180 / pi
# 分割ごとのステップ
stepx = dx / arc_div
stepy = dy / arc_div
seg = dist / arc_div
for (k = 0; k < arc_div; k++) {
# 各小区間の中心座標
x1 = x[i] + stepx * k
y1 = y[i] + stepy * k
x2 = x[i] + stepx * (k + 1)
y2 = y[i] + stepy * (k + 1)
mx = (x1 + x2) / 2
my = (y1 + y2) / 2
r = seg / 2
da = ea - sa
if (da <= 0) da += 360 # 角度補正
ang_a = ang * pi/180
cos_a = cos(ang_a)
sin_a = sin(ang_a)
for (g = 0; g <= div; g++) {
angl = (sa +(ea-sa) * g / div) * pi/180
xr = r * cos(angl)
yr = r * sin(angl) * ratio
xx = mx + xr * cos_a - yr * sin_a
yy = my + xr * sin_a + yr * cos_a
if (g > 0){
printf("sl %f %f %f %f\n", px, py, xx, yy)
}
px = xx; py = yy
}
}
}
print "#"
}
--------------------------------------------------

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36@M014008145064.v4.enabler.ne.jp>
・ツリー全体表示

9 / 378 ツリー    ←次へ | 前へ→
新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム
 1621267
ページ:  ┃  記事番号:  

C-BOARD Moyuku v1.03b5
Jw_cad Copyright (C)1997-2021 Jiro Shimizu & Yoshifumi Tanaka