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様、
たくさんの御知恵を頂きありがとうございました。