Jw_cad 相談室−その2 New

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

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

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


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

外変の修正(範囲内合計)
 momochi  - 25/8/10(日) 17:09 -
表計算の範囲内合計と同様の外変を(ChatGPTで)作成しましたが、
出力される合計値の末尾に「"」が付いてしまい、削除できません。
例:500" → 500 にしたいです。
どのように修正すればよいかご教示ください。

数値合計.bat

@echo off
REM Jw_cad 外変:数値合計(AWK最小・画面中心フォールバック付き)
REM #jww
REM #cd
REM #h3
REM #hc 合計したい文字(ch)を範囲選択してください
REM #0 書込み位置をクリック
REM #e

gawk -f "数値合計.awk" jwc_temp.txt > temp.txt
if exist jwc_temp.txt del jwc_temp.txt
rename temp.txt jwc_temp.txt


数値合計.awk

# 数値合計.awk(外変1・原点リセット最小版)? 0°固定・末尾に「"」が付かない(全文)
# 目的: cs/# の数値も合算し、通常文字(ch)で合計を出力。角度は常に 0°。
# 本文は数値のみ。本文中の余分なクォートは除去。

BEGIN{
SUM=0; CX=CY=""; FH="";
DXR=0.00; DYR=0.00; ABS_DX=0; ABS_DY=0; # 既存のまま(位置計算は /10)
}

function z2h(s, i,c,from,to){
from="0123456789.−+,"; to="0123456789.-+,";
for(i=1;i<=length(from);i++){ c=substr(from,i,1); gsub(c, substr(to,i,1), s) }
gsub(/,/, "", s);
return s;
}

function add_nums(t, s,m){
s=z2h(t);
while (match(s,/[-+]?[0-9]+(\.[0-9]+)?/)){
m=substr(s,RSTART,RLENGTH)+0;
SUM+=m;
s=substr(s,RSTART+RLENGTH);
}
}

function trim_zeros(s){
gsub(/\.?0+$/,"",s);
return (s=="" ? "0" : s);
}

function sanitize_text(s){
# 本文中に混入したクォート類を除去(表示末尾に " が出ないようにする)
gsub(/["”“〃″????W]/, "", s);
return s;
}

# クリック座標 (先頭 0 行)
/^[ \t]*0[ \t]+/{
n=split($0,a,/[ \t]+/);
if(n>=3){ CX=a[2]; CY=a[3]; }
}

# ch 行: 高さ FH を取得、本文の数値を加算(角度は読まない)
/^[ \t]*ch[ \t]+/{
if(FH==""){
n=split($0,a,/[ \t]+/);
if(n>=4) FH=a[4];
}
q=index($0,"\"");
if(q>0) add_nums(substr($0,q+1));
}

# cs 行(" あり/なし 両対応)
/^[ \t]*cs[ \t]+/{
q=index($0,"\"");
if(q>0){
add_nums(substr($0,q+1));
} else if ($NF ~ /^[-+]?[0-9]+(\.[0-9]+)?$/){
add_nums($NF);
}
}

# ベクトル文字の本文が "# " の場合
/^# /{
if(length($0)>=3) add_nums(substr($0,3));
}

END{
# フォールバック
if(CX=="" || CY==""){ CX=100; CY=100; }
if(FH=="") FH=600;

# 合計の本文(数値のみ)→ クォート類を除去
sumstr = trim_zeros(sprintf("%.6f", SUM+0));
if(sumstr=="") sumstr="0";
sumstr = sanitize_text(sumstr);

# 配置(/10)
px = CX / 10 + ABS_DX;
py = CY / 10 + ABS_DY;

# 出力:角度は常に 0° 固定。※ "%s" は必ず閉じクォート付き(\"%s\"\n)
print "bz";
printf("ch %.6f %.6f %.0f 0 \"%s\"\n", px, py, FH, sumstr);
}

引用なし

パスワード


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

外変の修正(範囲内合計) momochi 25/8/10(日) 17:09
Re:外変の修正(範囲内合計) momochi 25/8/13(水) 17:23
Re:外変の修正(範囲内合計) いっち 26/1/20(火) 8:09
Re:外変の修正(範囲内合計) momochi 26/1/21(水) 10:21
Re:外変の修正(範囲内合計) いっち 26/1/21(水) 12:23
Re:外変の修正(範囲内合計) いっち 26/1/21(水) 21:36

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

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