過去ログ

                                Page     511
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼曖昧文字重複処理  補助員 19/4/23(火) 3:12
   ┣Re:曖昧文字重複処理  kojima 19/4/23(火) 12:42
   ┃  ┣Re:曖昧文字重複処理  柳 絮 19/4/23(火) 15:51
   ┃  ┗Re:曖昧文字重複処理  補助員 19/4/24(水) 1:57
   ┃     ┗Re:曖昧文字重複処理  kojima 19/4/24(水) 12:46
   ┃        ┗Re:曖昧文字重複処理  補助員 19/4/25(木) 13:52
   ┣発想の転換 文字をずらして中抜文字  kojima 19/5/25(土) 12:59
   ┗発想の転換 文字をずらして立体文字  kojima 19/5/25(土) 14:39

 ───────────────────────────────────────
 ■題名 : 曖昧文字重複処理
 ■名前 : 補助員
 ■日付 : 19/4/23(火) 3:12
 -------------------------------------------------------------------------
   協力事務所からJWWデータを いただいたのですがやたらデーターが重いのです

印刷出力では特に気にならないのですが、JWWで文字を拡大してみますと文字が重なっているようです

重複処理を行いましたが軽くなりません

座標ファイルで調べましたら下記のように同じ文字が複数(7個)作画されていました。

文字列に対してのみ複数重なっている状態です。

文字列1つに対してこのような状態です

-------------------------------------------------------------------------
lg0
ly1
lc2
lt1
lw0
cn3
cn"$<MS ゴシック>
#
ly0
cn0 4.99533 4.99533 0.994833 2
cc0
ch -20.2988335 -0.0846664285714205 40.936333 0 "サンプルデータ   ------1.
cn0 4.99533 4.99533 0.994833 2
ch -20.6374995 0.0846665714285741 40.936333 0 "サンプルデータ   -------2.
cn0 4.99533 4.99533 0.994833 2
ch -20.2988335 -0.169333428571431 40.936333 0 "サンプルデータ   -------3.
cn0 4.99533 4.99533 0.994833 2
ch -20.6374995 -0.169333428571431 40.936333 0 "サンプルデータ   -------4.
cn0 4.99533 4.99533 0.994833 2
ch -20.2988335 0.16933357142857 40.936333 0 "サンプルデータ    -------5.
cn0 4.99533 4.99533 0.994833 2
ch -20.6374995 0.16933357142857 40.936333 0 "サンプルデータ    -------6.
cn0 4.99533 4.99533 0.994833 2
ch -20.4681665 -4.28571421906554e-007 40.936333 0 "サンプルデータ -------7.
-----------------------------------------------------------------------------


そこで、このようなあいまいな文字の重複処理が可能な外部変形を探しております。

仕様書でほとんど文字の図面です。一個ずつ消す方法やエディター等で処理する方法も考えましたが

結構大変です。複数枚図面がありますが同じ状態です

処理後の文字位置のずれは、印刷上問題がありませんので 1.を採用して残りは消す方法でよいと
考えますが難しいでしょうか

外部変形で範囲を囲い処理してくれないかと思いました。

当方外部変形を作るまでのスキルがありません

文字ずれ寸法の範囲が調整できれば便利と考えますが、情報がありましたらお教えください

よろしくお願いします。

 ───────────────────────────────────────  ■題名 : Re:曖昧文字重複処理  ■名前 : kojima  ■日付 : 19/4/23(火) 12:42  -------------------------------------------------------------------------
   batファイルにrubyスクリプトを記述するタイプの外部変形。
Rubyのインストールが必要。
※この掲示板からコピペすると、行頭に半角スペースが付加される場合があります。(行頭の半角スペースを削除してください)


@REM 重複した文字位置の整理
@echo off
REM #jww
REM #cd
REM #zz
REM #zc
REM #h3
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt > jwc_temp.txt
pause
goto end
#!ruby -Ks
include Math
def moji_zahyo(moji_x,moji_y,moji_l,moji_arg,moji_h,cc)
case cc
when 0
x,y=moji_x,moji_y
when 1
x=moji_x-moji_l/2*cos(moji_arg)
y=moji_y-moji_l/2*sin(moji_arg)
when 2
x=moji_x-moji_l*cos(moji_arg)
y=moji_y-moji_l*sin(moji_arg)
when 3
x=moji_x+moji_h/2*cos(moji_arg-PI/2)
y=moji_y+moji_h/2*sin(moji_arg-PI/2)
when 4
x=moji_x+moji_h/2*cos(moji_arg-PI/2)-moji_l/2*cos(moji_arg)
y=moji_y+moji_h/2*sin(moji_arg-PI/2)-moji_l/2*sin(moji_arg)
when 5
x=moji_x+moji_h/2*cos(moji_arg-PI/2)-moji_l*cos(moji_arg)
y=moji_y+moji_h/2*sin(moji_arg-PI/2)-moji_l*sin(moji_arg)
when 6
x=moji_x+moji_h*cos(moji_arg-PI/2)
y=moji_y+moji_h*sin(moji_arg-PI/2)
when 7
x=moji_x+moji_h*cos(moji_arg-PI/2)-moji_l/2*cos(moji_arg)
y=moji_y+moji_h*sin(moji_arg-PI/2)-moji_l/2*sin(moji_arg)
when8
x=moji_x+moji_h*cos(moji_arg-PI/2)-moji_l*cos(moji_arg)
y=moji_y+moji_h*sin(moji_arg-PI/2)-moji_l*sin(moji_arg)
end
return x,y
end
moji_zahyo_array=[];hch=[]
puts "hd","bz"
n1=0;n2=0
while ARGF.gets
xy=$_.split
if xy[0]=~/^hq/
elsif xy[0]=~/^hch/
xy.each{|item|hch<<item.to_f}
elsif xy[0]=~/^cn(\d+)/
print $_
cn=$1.to_i
case cn
when 0
moji_h=xy[2].to_f
else
moji_h=hch[cn]
end
elsif xy[0]=~/^cc/
print $_
cc=xy[0][2,1].to_i
elsif xy[0]=~/^ch/
n1 += 1
moji_x=xy[1].to_f
moji_y=xy[2].to_f
moji_l=hypot(xy[4].to_f,xy[3].to_f)
moji_arg=atan2(xy[4].to_f,xy[3].to_f)
x,y=moji_zahyo(moji_x,moji_y,moji_l,moji_arg,moji_h,cc)
if moji_zahyo_array.include?([x.round,y.round])
else
n2 += 1
print $_
moji_zahyo_array<<[x.round,y.round]
end
else
print $_
end
end
printf "h#削除された文字数#{n1-n2}\n"
__END__
:end

 ───────────────────────────────────────  ■題名 : Re:曖昧文字重複処理  ■名前 : 柳 絮  ■日付 : 19/4/23(火) 15:51  -------------------------------------------------------------------------
   ▼kojimaさん:
お世話になります。
私もそんなデータを頂いた時がありました。
作者は、意図して作図をしたそうでした
(何でも印刷をしたときに
  ハッキリ・クッキリ文字を再現したかったとか・・迷惑w)

動作確認をいたしました。
ありがたく使わせて頂きます。

動作環境
Win-7 64bit JWW7.11 ruby1.91(64bit)

 ───────────────────────────────────────  ■題名 : Re:曖昧文字重複処理  ■名前 : 補助員  ■日付 : 19/4/24(水) 1:57  -------------------------------------------------------------------------
   kojima 様

 いつもありがとうございます。
 こんなに早く公開してくださり感謝、感謝です。
 この数日何だったのか?との思いです

 早速この外変使用させていただきました。
 結果
   該当のファイル4回実行することで曖昧な文字の処理ができました。
   1回目  5203 文字処理
   2回目   371 文字処理
   3回目   25 文字処理
   4回目    4 文字処理

   合計  5603 文字処理

大変助かりました。

どれぐらいのずれ距離の処理が可能なのか気になりましたので
 手探りでずれ距離を探ってみました。
 1/1 図面で
 文字を左右上下に0.44mm(当方の場合は0.44mmが限度のように思います)程 度コピーして処理をしてみました
 結果2回で9文字を8文字処理してくれました

RN 様のご指摘も気になりましたので、変更してみました

   該当のファイル3回実行することで曖昧な文字の処理ができました。
   1回目  5203 文字処理
   2回目   368 文字処理
   3回目   32 文字処理
  
   合計  5603 文字処理

 わたくしの考えているオプション入力はこのずれ距離が1mmとか入力できる  と便利かなと考えております。
   図面の 重複処理を行い 次に この外変処理を 行う

 とにかく、すごいですよね

皆様 ありがとうございます

 ───────────────────────────────────────  ■題名 : Re:曖昧文字重複処理  ■名前 : kojima  ■日付 : 19/4/24(水) 12:46  -------------------------------------------------------------------------
   ▼補助員さん:
> わたくしの考えているオプション入力はこのずれ距離が1mmとか入力できる  と便利かなと考えております。


@REM 重複した文字位置の整理
@echo off
REM #jww
REM #cd
REM #zz
REM #zc
REM #h3
REM #c重複しているとみなす縦横ズレの最大値(図寸) 無指定:1/_/a
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 > jwc_temp.txt
pause
goto end
#!ruby -Ks
include Math
zure=1
while ARGV.size>1
case argument=ARGV.pop
when /\/a/
zure=argument[2..-1].to_f
end
end
def moji_zahyo(moji_x,moji_y,moji_l,moji_arg,moji_h,cc)
case cc
when 0
x,y=moji_x,moji_y
when 1
x=moji_x-moji_l/2*cos(moji_arg)
y=moji_y-moji_l/2*sin(moji_arg)
when 2
x=moji_x-moji_l*cos(moji_arg)
y=moji_y-moji_l*sin(moji_arg)
when 3
x=moji_x+moji_h/2*cos(moji_arg-PI/2)
y=moji_y+moji_h/2*sin(moji_arg-PI/2)
when 4
x=moji_x+moji_h/2*cos(moji_arg-PI/2)-moji_l/2*cos(moji_arg)
y=moji_y+moji_h/2*sin(moji_arg-PI/2)-moji_l/2*sin(moji_arg)
when 5
x=moji_x+moji_h/2*cos(moji_arg-PI/2)-moji_l*cos(moji_arg)
y=moji_y+moji_h/2*sin(moji_arg-PI/2)-moji_l*sin(moji_arg)
when 6
x=moji_x+moji_h*cos(moji_arg-PI/2)
y=moji_y+moji_h*sin(moji_arg-PI/2)
when 7
x=moji_x+moji_h*cos(moji_arg-PI/2)-moji_l/2*cos(moji_arg)
y=moji_y+moji_h*sin(moji_arg-PI/2)-moji_l/2*sin(moji_arg)
when 8
x=moji_x+moji_h*cos(moji_arg-PI/2)-moji_l*cos(moji_arg)
y=moji_y+moji_h*sin(moji_arg-PI/2)-moji_l*sin(moji_arg)
end
return x,y
end
moji_zahyo_array=[];hch=[]
puts "hd","bz"
n1=0;n2=0
while ARGF.gets
xy=$_.split
if xy[0]=~/^hq/
elsif xy[0]=~/^hch/
xy.each{|item|hch<<item.to_f}
elsif xy[0]=~/^cn(\d+)/
print $_
cn=$1.to_i
case cn
when 0
moji_h=xy[2].to_f
else
moji_h=hch[cn]
end
elsif xy[0]=~/^cc/
print $_
cc=xy[0][2,1].to_i
elsif xy[0]=~/^ch/
n1 += 1
moji_x=xy[1].to_f
moji_y=xy[2].to_f
moji_l=hypot(xy[4].to_f,xy[3].to_f)
moji_arg=atan2(xy[4].to_f,xy[3].to_f)
x,y=moji_zahyo(moji_x,moji_y,moji_l,moji_arg,moji_h,cc)
array=moji_zahyo_array.find{|x1,y1|(x1-x).abs<zure && (y1-y).abs<zure}
unless array
n2 += 1
print $_
moji_zahyo_array<<[x,y]
end
else
print $_
end
end
printf "h#削除された文字数#{n1-n2}\n"
__END__
:end

 ───────────────────────────────────────  ■題名 : Re:曖昧文字重複処理  ■名前 : 補助員  ■日付 : 19/4/25(木) 13:52  -------------------------------------------------------------------------
   kojima 様 ありがとうございます。

バッチリ動いております。
当方の希望通り、ずれ位置を入力出来るようアップしてくださり感謝、感謝 です。

今後共よろしくお願いします。

 ───────────────────────────────────────  ■題名 : 発想の転換 文字をずらして中抜文字  ■名前 : kojima  ■日付 : 19/5/25(土) 12:59  -------------------------------------------------------------------------
   10個の文字をずらして1個の中抜文字に見えるようにします。


@REM 微小なズレの文字を重ねて中抜文字(9+1文字)
@echo off
REM #jww
REM #cd
REM #zc
REM #c描画する文字 無指定:JW_CAD/_/a
REM #c文字幅 無指定:10/_/b
REM #c文字高 無指定:10/_/c
REM #c文字間隔 無指定:2/_/d
REM #c文字色 無指定:6/_/e
REM #c重ね文字の間隔 無指定:0.2/_/f
REM #h0
REM #0
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 %2 %3 %%4 %5 %6> jwc_temp.txt
pause
goto end
#!ruby -Ks
include Math
str="JW_CAD"
moji_w=10;moji_h=10;moji_d=2;moji_c=6
zure=0.2
while ARGV.size>1
case argument=ARGV.pop
when /\/a/
str=argument[2..-1].to_f
when /\/b/
moji_w=argument[2..-1].to_f
when /\/c/
moji_h=argument[2..-1].to_f
when /\/d/
moji_d=argument[2..-1].to_f
when /\/e/
moji_c=argument[2..-1].to_i
when /\/f/
zure=argument[2..-1].to_f
end
end
while ARGF.gets
xy=$_.split
if xy[0]=~/^cn\"/
font=$_.chomp
end
end
cn_a=["cn0",moji_w,moji_h,moji_d,moji_c]
cn=cn_a.join("\s")

puts "bz"
puts cn
puts "cc4"
puts font+"!"
printf("ch 0 0 1 0 \"%s\n",str)
printf("ch %.2f 0 1 0 \"%s\n",zure,str)
printf("ch -%.2f 0 1 0 \"%s\n",zure,str)
printf("ch %.2f %.2f 1 0 \"%s\n",zure,zure,str)
printf("ch 0 %.2f 1 0 \"%s\n",zure,str)
printf("ch -%.2f %.2f 1 0 \"%s\n",zure,zure,str)
printf("ch %.2f -%.2f 0 \"%s\n",zure,zure,str)
printf("ch 0 -%.2f 1 0 \"%s\n",zure,str)
printf("ch -%.2f -%.2f 1 0 \"%s\n",zure,zure,str)

puts "cn0 #{moji_w} #{moji_h} #{moji_d} 2"
puts font
printf("ch 0 0 1 0 \"%s\n",str)

__END__
:end

 ───────────────────────────────────────  ■題名 : 発想の転換 文字をずらして立体文字  ■名前 : kojima  ■日付 : 19/5/25(土) 14:39  -------------------------------------------------------------------------
   文字を微小にずらして立体的に浮き上がって見せるようにします。


@REM 微小なズレの文字を重ねて立体文字
@echo off
REM #jww
REM #cd
REM #zc
REM #h3
REM #c重ね文字の間隔 無指定:0.2/_/a
REM #c角度 無指定:30/_/b
REM #c重ねる回数 無指定:10/_/c
REM #k方向|1)右上り(L)|2)右下り(R)|3)左上り|4)左下り|/_/d
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 %2 %3 %4> jwc_temp.txt
pause
goto end
#!ruby -Ks
include Math
zure=0.2;n=10;kakudo=30
while ARGV.size>1
case argument=ARGV.pop
when /\/a/
zure=argument[2..-1].to_f
when /\/b/
kakudo=argument[2..-1].to_f
when /\/c/
n=argument[2..-1].to_i
when /\/d/
muki=argument[2..-1].to_i
end
end
k_arg=kakudo*PI/180
kei_x=1;kei_y=1
if muki==3 or muki==4
kei_x= -1

end
if muki==2 or muki==4
kei_y= -1
end
hcw=[];hch=[];hcd=[]
while ARGF.gets
xy=$_.split
if xy[0]=~/^hq/
elsif xy[0]=~/^hcw/
xy.each{|item|hcw<<item.to_f}
elsif xy[0]=~/^hch/
xy.each{|item|hch<<item.to_f}
elsif xy[0]=~/^hcd/
xy.each{|item|hcd<<item.to_f}


elsif xy[0]=~/^cn\"/
print $_
font=$_.chomp
elsif xy[0]=~/^cn(\d+)/
cn=$_.chomp
if xy.size==1
moji_w=hcw[$1.to_i]
moji_h=hch[$1.to_i]
moji_d=hcd[$1.to_i]
else
moji_w=xy[1].to_f
moji_h=xy[2].to_f
moji_d=xy[3].to_f
end
elsif xy[0]=~/^ch/
str=$'.chomp if $_=~/\"/
x,y,xw,yh=xy[1].to_f,xy[2].to_f,xy[3].to_f,xy[4].to_f
arg=atan2(yh,xw)
puts "cn0 #{moji_w} #{moji_h} #{moji_d} 2"
n.times{
x=x+zure*cos(arg+k_arg)*kei_x
y=y+zure*sin(arg+k_arg)*kei_y
printf("ch %.11f %.11f %.11f %.11f \"%s\n",x,y,xw,yh,str)
}
puts cn
print $_
else
print $_
end
end
__END__
:end

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 511