Indexへ
(31629)//【31555】→(31558)
------------------------
【タイトル】コピー貼付で文字基点が離れる。
【記事番号】 31555 (*)
【 日時 】08/10/21 18:07
【 発言者 】hide
測量座標を取り扱っているのですが、
縮尺の違うjww(version6.11)を二つ開いてコピー貼付を行うと、文字基点と点を一致させて書いたものが、貼付後には離れてしまいます。貼付後にも文字基点と点が一致した状態でコピー貼付をしたいのですが何かいい方法はありませんか。
また、点から少し離れた文字を一括で基点(左下)一致させる外部変形などはありますか。よろしくお願いします。
Indexへ
(31555)←【31558】→(31574)
------------------------
【タイトル】Re(1):コピー貼付で文字基点が離れる。
【記事番号】 31558 (31555)
【 日時 】08/10/21 23:02
【 発言者 】LA
▼hideさん:
こんにちは
>測量座標を取り扱っているのですが、
>縮尺の違うjww(version6.11)を二つ開いてコピー貼付を行うと、文字基点と点を一致させて書いたものが、貼付後には離れてしまいます。貼付後にも文字基点と点が一致した状態でコピー貼付をしたいのですが何かいい方法はありませんか。
貼付時の文字基点は中中になるようですね。
文字の種類が多いと使えませんが、
作図属性で 文字も倍率 にすると基点がずれませんので、
その後、属性変更で文字サイズを修正する というのはどうでしょうか。
> また、点から少し離れた文字を一括で基点(左下)一致させる外部変形などはありますか。よろしくお願いします。
ばらばらに配置された実or仮点の近くの文字をその点に合わせたい、という事でしょうか。 こちらの方は、思い当たりません。すいません。
Indexへ
(31558)←【31574】→(31588)
------------------------
【タイトル】Re(1):コピー貼付で文字基点が離れる。
【記事番号】 31574 (31555)
【 日時 】08/10/22 13:38
【 発言者 】hayabausa
こんにちは。
▼hideさん:
> また、点から少し離れた文字を一括で基点(左下)一致させる外部変形などはありますか。よろしくお願いします。
たぶん、下記のような外部変形で可能だと思いますので試してみてください。
注意点はバッチファイルを参照してください。
※要 mswin32ruby1.6〜1.8
バッチファイル名は「文字列点移動.bat」とし動作確認後に適当な名前に
変更してください。(start notepad.exe 文字列点移動.bat---修正必要)
#####下記よりメモ帳にコピペして全角スペース→半角スペースの置換をしてください
@REM 横文字列実点(点マーカ)移動
@echo off
goto do%1
rem ------------------------------------------------------------------
rem ※このファイルを編集した場合は上書き保存してください。
rem ※ファイルを閉じなくても編集は反映されます。
rem ------------------------------------------------------------------
rem ※注意点
rem 1.この外部変形は任意角度横文字列を実点または点マーカに移動させ
rem るものです。
rem 移動対象文字列は同一グループの各実点または点マーカーを中心と
rem する指定半径内最近傍の文字列です。
rem ※取得半径を大きくしますと予期せぬ文字列が移動される場合があ
rem りますので注意してください。
rem 移動後の文字基点設定は56行目です。
rem 移動しない文字列の基点は保持されます。
rem 2.対象は全レイヤグループです。
rem 念の為不必要なグループは非表示にしてください。
rem 3.図面軸角0で使用してください。
rem ------------------------------------------------------------------
REM #jww
REM #cd
REM #hm|横文字のみ L|BAT 編集 R|
REM #:1
REM #c 各点近傍文字列取得半径入力(0〜100 図寸mm) [ 無指定 20 ] :/_/a
REM #h2
REM #g1 全グループ対象(書込みグレープのみ場合は g0 )
REM #hc 範囲内文字列&実点(点マーカ)選択 ※ブロック図形対象外
REM #ht10
REM #ht20
REM #ht30
REM #ht40
REM #zz
REM #zw
REM #zc
REM #hr
REM #e
REM #:2
REM #h0
REM #hr
REM #e
:do1
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 %2 > jwc_temp.txt
del temp.txt
rem pause
exit
goto END
:do2
start notepad.exe 文字列点移動.bat
ruby -e 'puts "h# ruby #{RUBY_VERSION} "' > jwc_temp.txt
goto END
#!ruby -Ks
####### 設 定 ###############################
#
$cc = "0" #移動後の文字基点初期設定
# |6: 左上|7: 中上|8: 右上|
# |3: 左中|4: 中中|5: 右中|
# |0: 左下|1: 中下|2: 右下|
#
##############################################
$hankei = 20.0
while ARGV.size > 1
case argument = ARGV.pop
when /^\/a/
$hankei = argument[2..-1].to_f
end
end
if ($hankei < 0)&&($hankei > 100.0)
puts "he 文字列取得半径入力エラー。"; exit
end
lgs,lys,font,cns,ccs,pts,mojis = [],[],[],[],[],[],[]
while ARGF.gets
ele = split
if ele[0] =~ /^hq/
puts "hd"
elsif ele[0] =~ /^hs/
ele.shift
scales = ele.collect!{ |item| item.to_f }
elsif ele[0] =~ /^lg/
print
lgs << ele[0]
elsif ele[0] =~ /^ly/
print
lys << ele[0]
elsif ele[0] =~ /^cn"\$/
print
font << $_
elsif ele[0] =~ /^cn[0-9]/
print
cns << $_
elsif ele[0] =~ /^cc[0-8]/
print
ccs << ele[0]
elsif ele[0] =~ /^pt/
print
ele.collect!{ |item| item.to_f }
pts << [ele[1,2],lgs[-1]]
elsif ele[0] =~ /^ch/
mc = ele.shift
no = $_.index(/\"/); string = $_[no..-1].to_s
ele.collect!{ |item| item.to_f }
ch= [mc,ele[0],ele[1],ele[2],ele[3],string]
mojis << [ch,lgs[-1],lys[-1],font[-1],cns[-1],ccs[-1]]
else
print
end
end
pts.uniq!; mojis.uniq!
if pts.size == 0
puts "he 選択内に実点または点マーカがありません。"; exit
end
if mojis.size == 0
puts "he 選択内に文字列がありません。"; exit
end
count = 0
for pt in pts
er_mojis = []
for moji in mojis
if pt[1]==moji[1]
ex,ey = pt[0][0]-moji[0][1],pt[0][1]-moji[0][2]
er = (ex**2+ey**2)**0.5
hankei = $hankei*scales[pt[1][2,1].hex]
if er <= hankei
er_mojis << [er,moji]
end
end
end
if er_mojis.size != 0
er_mojis.sort!
min_moji = er_mojis.shift
puts min_moji[1][1],min_moji[1][2],min_moji[1][3],min_moji[1][4],"cc#{$cc}"
min_moji[1][0][1] = pt[0][0]; min_moji[1][0][2] = pt[0][1]
puts min_moji[1][0].join("\s")
mojis.delete(min_moji[1])
count += 1
end
end
mojis.each{|moji|
puts moji[1],moji[2],moji[3],moji[4],moji[5]
puts moji[0].join("\s")
}
puts lgs[0],lys[0]
if count == 0
puts "h# 移動する横文字列はありませんでした。"
else
puts "h# #{count}個の横文字列を各点に移動しました。"
end
:END
######以上です。
Indexへ
(31574)←【31588】//(31559)
------------------------
【タイトル】Re(2):コピー貼付で文字基点が離れる。
【記事番号】 31588 (31574)
【 日時 】08/10/23 01:03
【 発言者 】hide
おおおお!
見事な外部変形ありがとうございます。感服致しました。
図を回転して使用しても見事に動きました。
PFOXにもちゃんと転送できました。
LA様、hayabausa様、
たくさんの御知恵を頂きありがとうございました。