過去ログ

                                Page     239
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼図形の検索・置換  マチャプチャレ 16/11/7(月) 12:43
   ┗ほぼ解決か?  マチャプチャレ 16/11/7(月) 23:00
      ┗Re:ほぼ解決か?  kojima 16/11/9(水) 10:37
         ┗解決しました。  マチャプチャレ 16/11/9(水) 12:53

 ───────────────────────────────────────
 ■題名 : 図形の検索・置換
 ■名前 : マチャプチャレ
 ■日付 : 16/11/7(月) 12:43
 -------------------------------------------------------------------------
   図形の検索や置換ができる方法(外部変形など)はありませんか?

 ───────────────────────────────────────  ■題名 : ほぼ解決か?  ■名前 : マチャプチャレ  ■日付 : 16/11/7(月) 23:00  -------------------------------------------------------------------------
   自己レスです。

某所で教えていただいた「ブロック編集もどき」という外部変形がほぼ期待通りの動作をしてくれました。

アルファベットなどの線文字を含むシンボルの線文字部分は通常の文字に置き換えるといったことができるとなお良かったのですが、それはできないようです。

 ───────────────────────────────────────  ■題名 : Re:ほぼ解決か?  ■名前 : kojima  ■日付 : 16/11/9(水) 10:37  -------------------------------------------------------------------------
   ▼マチャプチャレさん:
>アルファベットなどの線文字を含むシンボルの線文字部分は通常の文字に置き換えるといったことができるとなお良かったのですが、それはできないようです。

線文字の形状を認識して、該当する文字に置換するという途方もない難問のようにも読みとれますが
さすがにそれは無理として
ブロック編集もどきで、消去線円選択に指定した線データを追加線円選択に指定した文字と置換したいということですか?
それならば以下のような工夫で可能になります。
(block_modoki.BATの一部修正とblock_modoki.rbの作成)
他の人が作成されたバッチファイルなので、block_modoki.BATの全文掲載は控えます。


〇block_modoki.BATの56行目に、REM #zc を追記する。

〇127行目から132行目の
:prg-4
start /w block_modoki.exe /a1 %2
del temp0.txt
copy nul0.txt temp2.txt > nul
copy nul0.txt temp3.txt > nul
goto end

:prg-4
start /w block_modoki.exe /a1 %2
del temp0.txt
copy jwc_temp.txt temp4.txt >nul
ruby -Ks block_modoki.rb temp4.txt > jwc_temp.txt
pause
copy nul0.txt temp2.txt > nul
copy nul0.txt temp3.txt > nul
copy nul0.txt temp4.txt > nul
goto end
に修正する。


〇以下の文をコピペして、block_modoki.rbというファイル名で同じフォルダに保存する。

#↓ここから
include Math
cn="";font="";str="";cc="";moji_x,moji_y=0,0
open("temp3.txt","r"){|f|
while f.gets
xy=$_.split
if xy[0]=~/^cc/
cc=$_.chomp
end
if xy[0]=~/^cn\d+$/
cn=$_.chomp
end
if xy[0]=~/^cn\"\$/
font=$_.chomp
end
if xy[0]=~/^ch/
moji_x,moji_y=xy[3].to_f,xy[4].to_f
str=$'.chomp if $_ =~ /\"/
end
end
}
moji_arg=atan2(moji_y,moji_x)
moji_l=hypot(moji_y,moji_x)

while ARGF.gets
xy=$_.split
if xy[0]=~/^lc/
print $_
lc=xy[0]
elsif xy[0]=~/^cc/
print $_
old_cc=$_.chomp
elsif xy[0]=~/^cn\d+$/
print $_
old_cn=$_.chomp
elsif xy[0]=~/^cn\"\$/
print $_
old_font=$_.chomp
elsif xy[0]=~/^ci/
if xy.size==8
x,y,ziku_arg=xy[1].to_f,xy[2].to_f,xy[7].to_f*PI/180
moji_x=moji_l*cos(moji_arg+ziku_arg)
moji_y=moji_l*sin(moji_arg+ziku_arg)
if lc=="lc9" && xy[4]==xy[5]
puts cn,cc,font
printf("ch %.11f %.11f %.11f %.11f \"%s\n",x,y,moji_x,moji_y,str)
puts old_cn,old_cc,old_font
else
print $_
end
else
print $_
end
else
print $_
end
end
#↑ここまで


※追加線円選択 に指定する文字を補助色の楕円(円は角度がないのでNG)で囲んでおいてください。
 補助色の楕円がない場合は、消去線円選択に指定された図形が消去されるだけの結果になります。

外部変形の流れは、
消去線円選択 に指定された図形がblock_modoki.exeで補助色の楕円に置換される。
block_modoki.rbで、補助色の楕円が指定された文字に置換される。

 ───────────────────────────────────────  ■題名 : 解決しました。  ■名前 : マチャプチャレ  ■日付 : 16/11/9(水) 12:53  -------------------------------------------------------------------------
   ▼kojima大明神さま

書いていただいたスクリプトとバッチ修正で希望通りの動作が実現しました。
願ったり叶ったりで大変嬉しいです。ありがとうございます。

「文字の代わりに適当な要素を描いておき後で文字に変換する」のアイデアは思いついたのですが、外変の動作が理解できていないので、こんな風にすっきりと実現できるとは考えていませんでした。

siegelさん、スターさん、kojimaさんに大感謝です。
ずっと大切に使わせていただきます。

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