Jw_cad 情報交換室−その3
JWW についての情報交換の場としてお使いください
初心者の方などのご相談は
Jw_cad 相談
室−その2をご利用ください
なお、情報交換室と相談室の両方に同じ内容を投稿するのはご遠慮ください
2009年9月以前の発言は
過去ログのページからご覧ください。
それ以降の過去ログは消失しています。
申し訳ありませんが、復活の予定はありません。
文字コードで説明しないと後で見返したときに「?」になると思います。
jlengthは「文字数」を返す関数です。
'26年現在、本家awk、GNU awk ともにマルチバイトに対応しています。
GNU awk について少し調べました。
(※ 他の実装については説明を避けます。)
# jgawk(GNU awk 日本語対応版 2.15.2 + 1.1 など) との違い
- multibyte characters.
- CSV 形式の読み込み・処理。
- @load
- @include
- 追加されていた組み込み関数 jindex, jlength, jsubstr はない。
- コマンドラインオプション「-Wlang-xxxx(-Wctype=xxxx)」はない。
- 文字コードの判別は UNIX の場合はロケール設定、Windows の場合はコードページ設定に依存する。
- → UNIX: ja_JP.UTF-8, ja_JP.SJIS; Windows: 65001(UTF-8), 932(Shift JIS)
- debuger
- The only supported binary distribution for MS-Windows systems is that provided by Eli Zaretskii’s “ezwinports” project.
# 試す
Windows 版は試した限りにおいて Shift JIS 環境は機能していないように見えます。
よって multibyte characters というのは UTF-8 のことと解釈します。
Linux 版での Shift JIS 環境下は試していません。
ロケール/コードページ設定とスクリプトで使用する文字コードは一致している必要があります。
Shift JIS 環境下において最新の gawk を既存スクリプトで運用する場合は、以下を留意する必要があります。
(※ バッチファイルの文字コードを UTF-8 とした場合、生成される jwc_temp.txt の文字コードは UTF-8(BOM 付き)です。)
- バッチファイルの文字コードは Shift JIS。
- awk スクリプトファイルの文字コードは UTF-8。
- 入出力は Shift JIS 、処理は UTF-8 と考える。
- 文字コードの変換は iconv, nkf, PowerShell などを利用する。
- jgawk は awk または gawk に置換する。
- jindex, jlength, jsubstr はそれぞれ index, length, substr に置換する。
- -Wlang-xxxx(-Wctype=xxxx) は削除する。
## 動作確認環境
Microsoft Windows [Version 10.0.26200.8655]
GNU Awk 5.4.0, API 4.1, (GNU MPFR 4.0.2, GNU MP 6.1.2)
iconv (GNU libiconv 1.19)
## BATCH FILE
@rem coding: CP932
@echo off
rem #jww
set "data_file=jwc_temp.txt"
set "temp_file=temp.txt"
set "awk_script=sample.awk"
chcp 65001
echo.
iconv --version
echo.
gawk --version
echo.
rem 適宣引数を追加してください。
iconv -f CP932 -t UTF-8 %data_file% | gawk -f %awk_script% - | iconv -f UTF-8 -t CP932 > %temp_file%
if exist %data_file% (
del %data_file%
) else (
echo %data_file% not found.
)
if exist %temp_file% (
rename %temp_file% %data_file%
) else (
echo %temp_file% not found.
)
:END
# SITE
One true awk · GitHub
https://github.com/onetrueawk/awk
Gawk - GNU Project - Free Software Foundation (FSF)
https://www.gnu.org/software/gawk/
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni102-red.in.shared-server.net>
|
|
F
- 26/6/30(火) 14:22 -
|
▼Fさん:
フォントは、MSゴシックを使っていましたが、文字間隔を「0.01」に変更したらきちんと表示されました。お騒がせしました。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0@sni105-red.in.shared-server.net>
▼R.Nさん:
おはようございます。
返信する文章をどのような文章にするかで、迷ってしまい返信が遅れてしまいました。
申し訳ありません。
私が記載した
> jgawk で下記の2つのファイル内容を同じにした
については、AWKスクリプトのENDブロックで行っています。
この外変の初回実行時に、「色の設定」画面でキャンセルした場合、つまり
length(hex_color)>0 ではない場合には、
"color_settings.txt" に hex_color を書き出さないようにしました。
>batファイルに "REM #cd" が必要と思います。
どのファイルか分からなくならないようにファイル名を
・ソリッド色変更3.bat
・ソリッド色変3.awk
にして、バッチファイルについては、パワーシェルのコードを差し替えただけで、それ以外はいじらなかった為、すでに、
rem #cd
が記載されていました。
>batのあるフォルダーを指定する必要があると思います。
jw_cadの外部変形の話では無いのですが、インターネット検索を行ったところ
cd /d %~dp0
の記事がいくつかヒットしました。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni105-red.in.shared-server.net>
|
|
tonbo
- 26/6/29(月) 19:05 -
|
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni107-red.in.shared-server.net>
|
|
F
- 26/6/29(月) 15:07 -
|
すみません、入力時は、表示されていましたが、この画面では、Unicodeが表示できないのですね。「ドボルザーク」を入力しました
<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0@sni107-red.in.shared-server.net>
|
|
F
- 26/6/29(月) 15:03 -
|
例えば、「Dvořák」を入力するとUnicode文字の後ろにスペースが開いてしまいます。バージョンは、10.03.1です
<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0@sni103-red.in.shared-server.net>
|
|
tonbo
- 26/6/28(日) 22:20 -
|
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni107-red.in.shared-server.net>
▼いっちさん:
おはようございます。
>tonboさんあてだけど、朝起きたら R.Nさんが投稿していたので、私も確認しました。
>
>R.Nさんの今回のパワーシェルのコードなら jgawk で下記の2つのファイル内容を同じにした場合でも、正常動作します。
>※もちろん、2つのファイル内容が違うままでも、正常動作します。
>
>1)color.txt
>2)color_settings.txt
検証、ありがとうございます。
batファイルに "REM #cd" が必要と思います。
記述しない場合は、"%~dp0color.txt"、"%~dp0color_settings.txt"等、
batのあるフォルダーを指定する必要があると思います。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0@sni105-red.in.shared-server.net>
▼R.Nさん:
tonboさんあてだけど、朝起きたら R.Nさんが投稿していたので、私も確認しました。
R.Nさんの今回のパワーシェルのコードなら jgawk で下記の2つのファイル内容を同じにした場合でも、正常動作します。
※もちろん、2つのファイル内容が違うままでも、正常動作します。
1)color.txt
2)color_settings.txt
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni107-red.in.shared-server.net>
<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0@sni101-red.in.shared-server.net>
|
|
tonbo
- 26/6/25(木) 8:37 -
|
▼R.Nさん:
RES、ありがとうございます
>読み込んだデータ(color_settings.txt)と新規に書き出すデータ(color.txt )を同じにする の意味が--?
外部変形で選択したソリッドカラーをカラーパレットに渡して立ち上げようとしましたが
color_settings.txtの1行目だけ上書きするのがAWKでは難しかったので、
color.txtを単純に上書きした方がすっきりすると思ったからです。
文章で表すと難しいです 申し訳ありません。
作りたい外部変形は選択したソリッド色でカラーパレットを立ち上げ
パレットの右側のバーで濃淡を調整してから選択色と同色のソリッドを全部変換する。
みたいに考えてます。
AIに相談しながら作ってみます。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni102-red.in.shared-server.net>
▼tonboさん:
>いえいえ ほとんどAIまかせですから・・
はじめまして、
スクリプトの提供、ありがとうございます。
私も、たまたま使用させて頂いて、エラーが出て動作しなかったので、
"AI"に聞いてみたまでで、PowerShellのスクリプト言語は知りません。
適当に処理内容を想定しているだけのことです。
>お願いがあります color_settings.txtから 2行のデータを読み込んで立ち上がっていますが 選択色は color.txt 作成した色は color_settings.txt
>にするには何処を編集すれば良いでしょうか ご教授お願いします。
>color.txtを編集して読み込ませるのにこの方が都合がいいです。
読み込んだデータ(color_settings.txt)と新規に書き出すデータ(color.txt )を同じにする の意味が--?
すみません。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0@sni101-red.in.shared-server.net>
|
|
tonbo
- 26/6/24(水) 22:08 -
|
▼R.Nさん:
>PowerShell_Ver7.x で動作しないので、tonboさんには失礼ですが、
>編集させて頂きました。
いえいえ ほとんどAIまかせですから・・
お願いがあります color_settings.txtから 2行のデータを読み込んで立ち上がっていますが 選択色は color.txt 作成した色は color_settings.txt
にするには何処を編集すれば良いでしょうか ご教授お願いします。
color.txtを編集して読み込ませるのにこの方が都合がいいです。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni107-red.in.shared-server.net>
▼R.Nさん:
こんにちは。
お世話になります。
>PowerShell_Ver7.x で動作しないので
私のパソコンでは、どちらのコードでも動作しました。
※R.N さんのパワーシェルのコードは、アポストロフィーが、' に変わってしまっているので、動作確認される方は、テキストエディタなどでそれを置換する必要があります。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni101-red.in.shared-server.net>
>▼tonboさん:
>ソリッド色変.awkを修正して任意色以外のソリッドも対応するようにしてみました。
ありがとうございます。
>▼いっちさん:
こんにちは、お世話になります。
PowerShell_Ver7.x で動作しないので、tonboさんには失礼ですが、
編集させて頂きました。
=============== ソリッド色変更.bat ==================
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
Add-Type -AssemblyName System.Windows.Forms; ^
$d = New-Object System.Windows.Forms.ColorDialog; ^
$d.FullOpen = $true; ^
$sf = '%~dp0color_settings.txt'; ^
if ([System.IO.File]::Exists($sf)) { ^
$lines = [System.IO.File]::ReadAllLines($sf); ^
if ($lines.Count -ge 2) { ^
if ($lines[0]) { ^
$d.Color = [System.Drawing.ColorTranslator]::FromHtml($lines[0]) ^
}; ^
$arr = $lines[1] -split ',' ^| Foreach-Object { [Convert]::ToInt32($_, 10) }; ^
$d.CustomColors = $arr; ^
} ^
} ^
if ($d.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) { ^
$hex = '#{0:X2}{1:X2}{2:X2}' -f $d.Color.R, $d.Color.G, $d.Color.B; ^
[System.IO.File]::WriteAllText('%~dp0color.txt', $hex); ^
$ccText = $d.CustomColors -join ','; ^
[System.IO.File]::WriteAllLines($sf, @($hex, $ccText)); ^
}
copy jwc_temp.txt temp.txt
jgawk -f ソリッド色変2.awk temp.txt > jwc_temp.txt
:pause
================================================
----------- ソリッド色変2.awk (まんま) ---------
BEGIN {
color_file = "color.txt"
if ((getline < color_file) > 0) {
hex_color = $1
}
close(color_file)
}
/^hq/ {print "hd";next}
/^s[lceog]/ {
print "lc 10 "hex_color
print $0
next
}
{print $0}
------------------------------------------------
※ 難を言うと、PowerShellの動作が遅い(自PCスペックでは^^^)
自由に突っついてみてください。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0@sni104-red.in.shared-server.net>
▼tonboさん:
>標準色のソリッドは 印刷時真っ黒になってしまうので使っていませんでした。
(私が)今仕事で利用している図面では、任意色では無いソリッドを利用しています。
この利用方法は、今まで(あまり目にしたことは)無かったように思います。
もともとjw_cadで書かれた図面ではなく、データー変換で jwwファイルにしたものです。
そして、真っ黒になることを意図的にねらって、そうしている図面のようにも思います。
(本来)データーが大きめのファイルなので、MaCADでの編集も併用しているのですが、MaCADだとそのソリッドが無くなってしまうのが(ちょっと)つらいところではあります。
>ソリッド色変.awkを修正して任意色以外のソリッドも対応するようにしてみました。
ありがとうございます。
(昨日)自分で修正したスクリプトと見比べてさせて頂きました。
──────
そもそも、私は自らソリッドの作図をする事がほとんど無いので、今回ソリッドの解説サイトなどを見たりもしていました。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni106-red.in.shared-server.net>
|
|
tonbo
- 26/6/22(月) 10:43 -
|
標準色のソリッドは 印刷時真っ黒になってしまうので使っていませんでした。
ソリッド色変.awkを修正して任意色以外のソリッドも対応するようにしてみました。
--------------# ソリッド色変.awk---------------
BEGIN {
color_file = "color.txt"
if ((getline < color_file) > 0) {
hex_color = $1
}
close(color_file)
}
/^hq/ {print "hd";next}
/^s[lceog]/ {
print "lc 10 "hex_color
print $0
next
}
{print $0}
-----------------------------------------------
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni103-red.in.shared-server.net>
▼tonboさん:
> 興味のある方はお試しください。
試してみました。
>作成した色と選択した色をカレントのTXTファイルに保存し
>次回起動時に読み込むようにしました。(してもらいました。)
とても良いですね。
>AWKスクリプトは変更なしです。
変更前は、任意色では無いソリッドも対象にした方が、良いかなと(私は)思いました。
この時注意するのは、付けている曲線属性を無くさないようにする事のようでした。
※今仕事で利用している図面にあるソリッドが、たまたま任意色では無いソリッドだったので、(少し)気になりました。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni103-red.in.shared-server.net>
|
|
tonbo
- 26/6/20(土) 19:08 -
|
作成した色と選択した色をカレントのTXTファイルに保存し
次回起動時に読み込むようにしました。(してもらいました。)
JW_CAD本体のカラーパレットとは同期しません。
AWKスクリプトは変更なしです。
-------------------------------------------------------
@rem 一括 ソリッド色変更(全グループレイヤ対象)
@echo off
rem
rem #jww
rem #cd
rem #h1
rem #hcソリッドの色を変更 範囲選択
rem #g1
rem #hr
rem #e
powershell -noprofile -executionpolicy bypass -command ^
"add-type -assemblyname system.windows.forms; " ^
"$d = new-object system.windows.forms.colordialog; " ^
"$d.fullopen = $true; " ^
"$sf = 'color_settings.txt'; " ^
"if (test-path $sf) { " ^
" $lines = get-content $sf; " ^
" if ($lines.count -ge 2) { " ^
" if ($lines[0]) { $d.color = [system.drawing.colortranslator]::fromhtml($lines[0]) }; " ^
" $arr = $lines[1] -split ',' | foreach-object { [convert]::toint32($_, 10) }; " ^
" $d.customcolors = $arr; " ^
" } " ^
"} " ^
"if ($d.showdialog() -eq [system.windows.forms.dialogresult]::ok) { " ^
" $hex = '#{0:x2}{1:x2}{2:x2}' -f $d.color.r, $d.color.g, $d.color.b; " ^
" set-content -path 'color.txt' -value $hex -encoding ascii; " ^
" $ccText = $d.customcolors -join ','; " ^
" @($hex, $ccText) | set-content -path $sf -encoding ascii; " ^
"}"
copy jwc_temp.txt temp.txt
jgawk -f ソリッド色変.awk temp.txt > jwc_temp.txt
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni104-red.in.shared-server.net>
|
|
Since Dos
- 26/6/20(土) 15:52 -
|
▼tonboさん:
>*左端のダブルクォーテーション( " )の前に半角スペースが無いと上手く動きませんでした
半角スペースが無いと、パレットが立ち上がらないで、いきなり前回の色に変更されますね。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36@sni102-red.in.shared-server.net>
Jw_cad Copyright (C)1997-2021 Jiro Shimizu & Yoshifumi Tanaka