Jw_cad 情報交換室−その3New

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

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

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


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

水平・垂直文字を個別に移動させる外変 momochi 26/1/8(木) 19:29
Re:水平・垂直文字を個別に移動させる外変 momochi 26/1/8(木) 19:35
Re:水平・垂直文字を個別に移動させる外変 momochi 26/1/10(土) 14:21
Re:水平・垂直文字を個別に移動させる外変 他人 26/1/11(日) 12:17
Re:水平・垂直文字を個別に移動させる外変 いっち 26/1/11(日) 12:56
Re:水平・垂直文字を個別に移動させる外変 他人 26/1/11(日) 13:37
Re:水平・垂直文字を個別に移動させる外変 いっち 26/1/12(月) 12:00
Re:水平・垂直文字を個別に移動させる外変 他人 26/1/12(月) 19:16
Re:水平・垂直文字を個別に移動させる外変 Since Dos 26/1/13(火) 14:22
Re:水平・垂直文字を個別に移動させる外変 R.N 26/1/14(水) 14:11
Re:水平・垂直文字を個別に移動させる外変 Since Dos 26/1/14(水) 15:06
Re:水平・垂直文字を個別に移動させる外変 somem 26/1/14(水) 18:50
Re:水平・垂直文字を個別に移動させる外変 Since Dos 26/1/14(水) 19:15

水平・垂直文字を個別に移動させる外変
 momochi  - 26/1/8(木) 19:29 -
水平文字(または垂直文字)だけを選択的に、上下左右に移動させる外変をアップします。
データ変換等で文字位置がずれている場合の修正などに使えると思います。(Geminiで作成)

【使い方】 範囲選択後、ステータスバーに移動量を「X Y」とスペース区切りで入力します。(例:右に100mm、上に50mm動かす場合 → 100 50)

興味のある方はお試しください。


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

水平文字移動XY.bat

@echo off
REM #jww
REM #cd
REM #h1
REM #hc 文字を選択してください
REM #c 移動量(mm)を入力 (左右 上下) ※例「100 50」「100 0」「0 50」 : /M
REM #e

REM ------------------------------------------------
REM ファイル名:水平文字移動XY.bat
REM ------------------------------------------------

REM ------------------------------------------------
REM 【 使い方 】
REM 1. 範囲選択します(水平・垂直が混ざっていてもOK)。
REM 2. ステータスバーに移動量を入力します。
REM 入力順序は 「X方向(左右) Y方向(上下)」 です。
REM
REM 【 入力例 】
REM ● 右に100、上に50 動かす
REM 100 50
REM
REM ● 左に100 動かす(上下はそのまま)
REM -100 0
REM
REM ● 下に50 動かす(左右はそのまま)
REM 0 -50
REM ------------------------------------------------

jgawk -f 水平文字移動XY.awk jwc_temp.txt %* > temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

水平文字移動XY.awk

# ファイル名:水平文字移動XY.awk
# 仕様:
# ・水平文字(傾き0)だけを抽出して移動する
# ・入力1つ目:X方向移動量
# ・入力2つ目:Y方向移動量

BEGIN {
MOVE_X = 0
MOVE_Y = 0
num_count = 0

# --- 引数解析(全角対応) ---
for (i = 1; i < ARGC; i++) {
str = ARGV[i]
sub(/^\/M/, "", str) # /Mを除去
str = to_half(str) # 全角→半角

if (str ~ /^-?[0-9.]+$/) {
if (num_count == 0) {
MOVE_X = str + 0
num_count++
}
else if (num_count == 1) {
MOVE_Y = str + 0
num_count++
}
ARGV[i] = ""
}
}

EPS = 1.0e-4
print "hd"
}

{
line = $0
if (substr(line, 1, 2) == "hq") next
head = substr(line, 1, 2)

# 文字データの処理
if (head == "ch" || head == "cs") {
split(line, a, /[ \t]+/)
vx = a[4] + 0 # 方向余弦X
vy = a[5] + 0 # 方向余弦Y

# 文字列の切り出し
str_start_pos = index(line, "\"")
str_content = substr(line, str_start_pos)

# --- 水平文字の判定 ---
# vy(Y方向の傾き)が ほぼ0 であれば水平とみなす
if (vy > -EPS && vy < EPS) {

# X座標とY座標の両方を計算
new_x = a[2] + MOVE_X
new_y = a[3] + MOVE_Y

printf "%s %.15g %.15g %.15g %.15g %s\n", head, new_x, new_y, vx, vy, str_content
next
}
}

# 水平文字以外(垂直など)はそのまま出力
print line
}

# --- 全角→半角変換関数 ---
function to_half(s) {
gsub(/0/, "0", s); gsub(/1/, "1", s); gsub(/2/, "2", s)
gsub(/3/, "3", s); gsub(/4/, "4", s); gsub(/5/, "5", s)
gsub(/6/, "6", s); gsub(/7/, "7", s); gsub(/8/, "8", s)
gsub(/9/, "9", s); gsub(/./, ".", s); gsub(/−/, "-", s)
gsub(/+/, "+", s);
return s
}

引用なし

パスワード


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

Re:水平・垂直文字を個別に移動させる外変
 momochi  - 26/1/8(木) 19:35 -
垂直文字移動XY.bat


@echo off
REM #jww
REM #cd
REM #h1
REM #hc 文字を選択してください
REM #c 移動量(mm)を入力 (左右 上下) ※例「100 50」「100 0」「0 50」 : /M
REM #e

REM ------------------------------------------------
REM ファイル名:垂直文字移動XY.bat
REM ------------------------------------------------

REM ------------------------------------------------
REM 【 使い方 】
REM 1. 範囲選択します(水平・垂直が混ざっていてもOK)。
REM 2. ステータスバーに移動量を入力します。
REM 入力順序は 「X方向(左右) Y方向(上下)」 です。
REM
REM 【 入力例 】
REM ● 右に100、上に50 動かす
REM 100 50
REM
REM ● 左に100 動かす(上下はそのまま)
REM -100 0
REM
REM ● 下に50 動かす(左右はそのまま)
REM 0 -50
REM ------------------------------------------------

jgawk -f 垂直文字移動XY.awk jwc_temp.txt %* > temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

垂直文字移動XY.awk


# ファイル名:垂直文字移動XY.awk
# 仕様:
# ・垂直文字(傾き90度)だけを抽出して移動する
# ・入力1つ目:X方向移動量
# ・入力2つ目:Y方向移動量

BEGIN {
MOVE_X = 0
MOVE_Y = 0
num_count = 0

# --- 引数解析(全角対応) ---
for (i = 1; i < ARGC; i++) {
str = ARGV[i]
sub(/^\/M/, "", str) # /Mを除去
str = to_half(str) # 全角→半角

if (str ~ /^-?[0-9.]+$/) {
if (num_count == 0) {
MOVE_X = str + 0
num_count++
}
else if (num_count == 1) {
MOVE_Y = str + 0
num_count++
}
ARGV[i] = ""
}
}

EPS = 1.0e-4
print "hd"
}

{
line = $0
if (substr(line, 1, 2) == "hq") next
head = substr(line, 1, 2)

# 文字データの処理
if (head == "ch" || head == "cs") {
split(line, a, /[ \t]+/)
vx = a[4] + 0 # 方向余弦X
vy = a[5] + 0 # 方向余弦Y

# 文字列の切り出し
str_start_pos = index(line, "\"")
str_content = substr(line, str_start_pos)

# --- ▼▼▼ 垂直文字の判定 ▼▼▼ ---
# vx(X方向の傾き)が ほぼ0 であれば垂直とみなす
if (vx > -EPS && vx < EPS) {

# X座標とY座標の両方を計算
new_x = a[2] + MOVE_X
new_y = a[3] + MOVE_Y

printf "%s %.15g %.15g %.15g %.15g %s\n", head, new_x, new_y, vx, vy, str_content
next
}
}

# 垂直文字以外(水平など)はそのまま出力
print line
}

# --- 全角→半角変換関数 ---
function to_half(s) {
gsub(/0/, "0", s); gsub(/1/, "1", s); gsub(/2/, "2", s)
gsub(/3/, "3", s); gsub(/4/, "4", s); gsub(/5/, "5", s)
gsub(/6/, "6", s); gsub(/7/, "7", s); gsub(/8/, "8", s)
gsub(/9/, "9", s); gsub(/./, ".", s); gsub(/−/, "-", s)
gsub(/+/, "+", s);
return s
}

引用なし

パスワード


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

Re:水平・垂直文字を個別に移動させる外変
 momochi  - 26/1/10(土) 14:21 -
水平文字移動と垂直文字移動の外変を1つにまとめました。
数値入力からマウス指示(基点→終点)に変更しました。


水平垂直文字移動.bat

@echo off
REM #jww
REM #cd
REM #h1
REM #hc 範囲選択してください
REM #g1 全レイヤグループのデータを編集可能にする
REM #1 【水平文字】の基点を指示 (L)
REM #2 【水平文字】の移動先を指示 (L)
REM #3 【垂直文字】の基点を指示 (L)
REM #4 【垂直文字】の移動先を指示 (L)
REM #e

REM ------------------------------------------------
REM ファイル名:水平垂直文字移動.bat
REM ------------------------------------------------

jgawk -f 水平垂直文字移動.awk jwc_temp.txt > temp.txt
copy temp.txt jwc_temp.txt
del temp.txt

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
水平垂直文字移動.awk

# ファイル名:水平垂直文字移動.awk
# 仕様:
# ・水平文字(0度)は #1→#2 のベクトルで移動
# ・垂直文字(90/270度)は #3→#4 のベクトルで移動
# ・それ以外は移動しない

BEGIN {
# 水平用移動量
dx_h = 0; dy_h = 0
h_x1 = 0; h_y1 = 0

# 垂直用移動量
dx_v = 0; dy_v = 0
v_x1 = 0; v_y1 = 0

EPS = 1.0e-4
print "hd"
}

# --- 座標の取得と計算 ---
# 水平文字用 (#1 -> #2)
/^hp1/ { h_x1 = $2; h_y1 = $3; next }
/^hp2/ { dx_h = $2 - h_x1; dy_h = $3 - h_y1; next }

# 垂直文字用 (#3 -> #4)
/^hp3/ { v_x1 = $2; v_y1 = $3; next }
/^hp4/ { dx_v = $2 - v_x1; dy_v = $3 - v_y1; next }


# --- メイン処理 ---
{
line = $0
if (substr(line, 1, 2) == "hq") next
head = substr(line, 1, 2)

# 文字データの処理
if (head == "ch" || head == "cs") {
split(line, a, /[ \t]+/)
vx = a[4] + 0
vy = a[5] + 0

# 文字列部分の取り出し
str_start = index(line, "\"")
str_cont = substr(line, str_start)

# A. 水平文字の場合 (vy ≒ 0) -> 水平用移動量を加算
if (vy > -EPS && vy < EPS) {
new_x = a[2] + dx_h
new_y = a[3] + dy_h
printf "%s %.15g %.15g %.15g %.15g %s\n", head, new_x, new_y, vx, vy, str_cont
next
}

# B. 垂直文字の場合 (vx ≒ 0) -> 垂直用移動量を加算
else if (vx > -EPS && vx < EPS) {
new_x = a[2] + dx_v
new_y = a[3] + dy_v
printf "%s %.15g %.15g %.15g %.15g %s\n", head, new_x, new_y, vx, vy, str_cont
next
}
}

# それ以外はそのまま出力
print line
}

引用なし

パスワード


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

Re:水平・垂直文字を個別に移動させる外変
 他人  - 26/1/11(日) 12:17 -
▼momochiさん:

>水平垂直文字移動.awk
>
> ----------------------------------
> ----------------------------------
> # 文字データの処理
> if (head == "ch" || head == "cs") {
> ----------------------------------
> ----------------------------------

《文字列》 --- 属性  <JWW_SMPL.BAT> 参照
  ch ⇒ 横文字
  cs ⇒ 寸法値  ( 縦文字だと〜 CV ・・・?)

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0@flh2-125-195-63-65.osk.mesh.ad.jp>
・ツリー全体表示

Re:水平・垂直文字を個別に移動させる外変
 いっち  - 26/1/11(日) 12:56 -
▼他人さん:

>《文字列》 --- 属性  <JWW_SMPL.BAT> 参照
>  ch ⇒ 横文字
>  cs ⇒ 寸法値  ( 縦文字だと〜 CV ・・・?)

縦文字に対応させたわけではなく、横文字を90度に配置した文字に対応させているようですよ。
そもそも、縦文字での値の取得をしているコードがみあたらない気がします。

文字の横寸法と縦寸法が同じ場合でないと、横文字と縦文字で全く同じには出来なかったような気がします。
ちなみに私自身は、横文字と縦文字に対応させた外変を、ひとつだけですが作成した事があります。

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36@KD059129054212.ppp-bb.dion.ne.jp>
・ツリー全体表示

Re:水平・垂直文字を個別に移動させる外変
 他人  - 26/1/11(日) 13:37 -
▼いっちさん:
こんにちは、
助言頂き、すみません。(縦文字で動作しなかったもので---)

>▼他人さん:
>
>>《文字列》 --- 属性  <JWW_SMPL.BAT> 参照
>>  ch ⇒ 横文字
>>  cs ⇒ 寸法値  ( 縦文字だと〜 CV ・・・?)
>
>縦文字に対応させたわけではなく、横文字を90度に配置した文字に対応させているようですよ。
>そもそも、縦文字での値の取得をしているコードがみあたらない気がします。
>
>文字の横寸法と縦寸法が同じ場合でないと、横文字と縦文字で全く同じには出来なかったような気がします。
>ちなみに私自身は、横文字と縦文字に対応させた外変を、ひとつだけですが作成した事があります。

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0@flh2-125-195-63-65.osk.mesh.ad.jp>
・ツリー全体表示

Re:水平・垂直文字を個別に移動させる外変
 いっち  - 26/1/12(月) 12:00 -
▼他人さん:

ごめんなさい。

momochiさんの外変が、「横文字を90度に配置した文字に対応させている」のは、間違いないようです。

しかし、この外変は単に文字基点からの移動だけですので、他人さんの指摘に基づく変更

if (head == "ch" || head == "cs" || head == "cv")

で、「水平垂直文字移動.awk」 が動作する事を、確認致しました。

申し訳ありません。

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36@KD059129054212.ppp-bb.dion.ne.jp>
・ツリー全体表示

Re:水平・垂直文字を個別に移動させる外変
 他人  - 26/1/12(月) 19:16 -
▼いっちさん:
こんにちは、
投稿前に、下記ご指摘の方法(また、正規表現(/^c[hvsropt2]/)とか〜方法)を試して、動作することは確認していました。 すみません!!
>if (head == "ch" || head == "cs" || head == "cv")
わざわざ、Res頂き、感謝いたします。
AWKを理解できてないもので、ご迷惑お掛けしました。

>▼他人さん:
>
>ごめんなさい。
>
>momochiさんの外変が、「横文字を90度に配置した文字に対応させている」のは、間違いないようです。
>
>しかし、この外変は単に文字基点からの移動だけですので、他人さんの指摘に基づく変更
>
>if (head == "ch" || head == "cs" || head == "cv")
>
>で、「水平垂直文字移動.awk」 が動作する事を、確認致しました。
>
>申し訳ありません。

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0@flh2-125-195-63-65.osk.mesh.ad.jp>
・ツリー全体表示

Re:水平・垂直文字を個別に移動させる外変
 Since Dos E-MAIL  - 26/1/13(火) 14:22 -
▼momochiさん: 他人さん、いっちさんのレスを参考に ‥‥ # 文字データの処理 if (head == "cv" || head == "cs") { ‥‥ と変更して、縦文字移動XY.bat、縦文字移動XY.awkとして作ってみました。 >水平文字移動と垂直文字移動の外変を1つにまとめました。 >数値入力からマウス指示(基点→終点)に変更しました。 これに縦文字移動を含めてマウス指示ができたら便利でしょーね (^^;
引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36@113x42x194x118.ap113.ftth.ucom.ne.jp>
・ツリー全体表示

Re:水平・垂直文字を個別に移動させる外変
 R.N  - 26/1/14(水) 14:11 -
▼Since Dosさん:

>これに縦文字移動を含めてマウス指示ができたら便利でしょーね (^^;

somemさんが、外変「文字移動2」を公開されました。
http://somem.cocolog-nifty.com/cad_dwg/2026/01/post-8105d1.html#more

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0@flh2-125-195-63-65.osk.mesh.ad.jp>
・ツリー全体表示

Re:水平・垂直文字を個別に移動させる外変
 Since Dos E-MAIL  - 26/1/14(水) 15:06 -
R.N さん 早速の紹介ありがとうごさいます。 somemさん「文字移動2」ありがとうございます。 で、[水平横文字]、[垂直横文字]の指定がスキップできると‥ (^^;
引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36@113x42x194x118.ap113.ftth.ucom.ne.jp>
・ツリー全体表示

Re:水平・垂直文字を個別に移動させる外変
 somem  - 26/1/14(水) 18:50 -
▼Since Dosさん:

>somemさん「文字移動2」ありがとうございます。
>で、[水平横文字]、[垂直横文字]の指定がスキップできると‥ (^^;

残念ながら、前半のスキップはできません。
同一点を4回クリックすれば、スキップと同等になりますが、
ご自分の優先順位に合わせて、指定する順番を変更したほうが良いでしょう。

例)縦文字を最初に指定する場合
---バッチファイル
REM #1 縦文字 基準点
REM #2 縦文字 移動点
REM #3 水平横文字 基準点
REM #4 水平横文字 移動点
REM #5 垂直横文字 基準点
REM #6 垂直横文字 移動点

---スクリプト
#縦文字
/hp1/{xv=$2;yv=$3;next}
/hp2/{dxv=$2-xv;dyv=$3-yv;next}
#水平横文字
/hp3/{xh=$2;yh=$3;next}
/hp4/{dxh=$2-xh;dyh=$3-yh;next}
#垂直横文字
/hp5/{xhv=$2;yhv=$3;next}
/hp6/{dxhv=$2-xhv;dyhv=$3-yhv;next}

引用なし

パスワード


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

Re:水平・垂直文字を個別に移動させる外変
 Since Dos E-MAIL  - 26/1/14(水) 19:15 -
▼somemさん: 検討いただきありがとうございます。 同一点クリックは自分でも確認してました。 頻度が高いわけではないのでこのまま使用させていただきます。
引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36@113x42x194x118.ap113.ftth.ucom.ne.jp>
・ツリー全体表示

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

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