過去ログ

                                Page      52
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼外部変形コマンドを探しております  構造関係者 15/05/11(月) 21:39
   ┗Re(1):外部変形コマンドを探しております  kojima 15/05/12(火) 8:38
      ┗Re(2):外部変形コマンドを探しております  構造関係者 15/05/12(火) 14:20

 ───────────────────────────────────────
 ■題名 : 外部変形コマンドを探しております
 ■名前 : 構造関係者
 ■日付 : 15/05/11(月) 21:39
 -------------------------------------------------------------------------
   構造関係の仕事をしています。
計算書から構造図を作成するソフトを使用していますが
伏図等では、部材の符号がばらばらで作図されてきます。
RG20→R・G・20と3文字構成になっております。
外部変形で文字結合を行っておりますが、文字数が1000文字程度の場合
範囲囲いの回数も400回程度と、とても面倒に感じております。
そこでお教えいただきたいのですが一度の範囲指定で文字結合が可能な
外部変形コマンドがあればお教えいただきたいのです。
縦文字、横文字があります。見かけ上ひとつの文字に表示してきますので(実際は3文字構成)
一定の間隔以内の文字を結合してくれればよいのではないでしょうか
このような外部変形がありましたらお教えください

 ───────────────────────────────────────  ■題名 : Re(1):外部変形コマンドを探しております  ■名前 : kojima  ■日付 : 15/05/12(火) 8:38  -------------------------------------------------------------------------
   バッチファイルにRubyスクリプトを記述した外部変形です。
バッチファイルだけで動作します。(但し、Rubyのインストールが必要)

コピペ後、全角スペースを半角スペースに一括置換してください。
行頭に半角スペースが挿入される場合がありますので
その時は、手作業で行頭の半角スペースを削除してください。


@REM 接近した文字の連結
@echo off
REM #jww
REM #cd
REM #zz
REM #h3
REM #hc文字を範囲選択してください。 文字基点は全て左下に変更されます
REM #c文字間隔の最大値(図寸) 無指定:1.0/_/a
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 > jwc_temp.txt
pause
exit
#!ruby -Ks
include Math
str_d=1.0
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            str_d=argument[2..-1].to_f
    end
end
#文字データのクラス
class Strdata
    attr_accessor :ch, :cn, :font, :str, :x1, :y1, :x2, :y2
    def initialize(ch,cn,font,str,x1,y1,x2,y2)
        @ch=ch
        @cn=cn
        @font=font
        @str=str
        @x1=x1
        @y1=y1
        @x2=x2
        @y2=y2
    end
end
#文字列の配列str_aから連続した部分文字列を抽出してrenzokuに格納
def renzoku_moji(str_a,str_d)
    a=str_a.shift
    renzoku=[a]
    begin
        b=str_a.find{|item2|
            l=hypot(item2.x1-a.x2,item2.y1-a.y2)
            l<=str_d && a.ch==item2.ch && a.cn==item2.cn
        }
        if b
            a=b
            renzoku<<a
            str_a.delete_if{|item2|item2==b}
        end
    end while(b)
    begin
        a=renzoku[0]
        b=str_a.find{|item2|
            l=hypot(a.y1-item2.y2,a.x1-item2.x2)
            l<=str_d && a.ch==item2.ch && a.cn==item2.cn
        }
        if b
            a=b
            renzoku.unshift(a)
            str_a.delete_if{|item2|item2==b}
        end
    end while(b)
    return renzoku
end
while ARGF.gets
    if $_ =~ /^z3/
        STDERR.puts "寸法値が選択されています 処理を中止します"
        exit
    end
end
puts "hd"
str_a=[]
open("temp.txt","r"){|f|
    while f.gets
        xy=$_.split
        if xy[0] =~ /^hq/
        elsif xy[0] =~ /^cn\"/
            font=$_.chomp
        elsif xy[0] =~ /^cn\d/
            cn=$_.chomp
        elsif xy[0] =~ /^c[hv]/
            if $_ =~ /\"/
                moji=$'.chomp
                ch=xy[0]
                x1,y1=xy[1].to_f,xy[2].to_f
                l=hypot(xy[4].to_f,xy[3].to_f)
                arg=atan2(xy[4].to_f,xy[3].to_f)
                x2,y2=x1+l*cos(arg),y1+l*sin(arg)
                str_a<<Strdata.new(ch,cn,font,moji,x1,y1,x2,y2)
            end
        else
            print $_
        end
    end
}
n=0
while str_a.size>0
    renzoku=renzoku_moji(str_a,str_d)
    moji_a=[]
    renzoku.each{|item|moji_a<<item.str}
    string=moji_a.join
    puts renzoku[0].cn,renzoku[0].font
    ch=renzoku[0].ch
    x1,y1=renzoku[0].x1,renzoku[0].y1
    xl=renzoku[0].x2-renzoku[0].x1
    yl=renzoku[0].y2-renzoku[0].y1
    printf("%s %.11f %.11f %.11f %.11f \"%s\n",ch,x1,y1,xl,yl,string)
    if moji_a.size>1
        STDERR.puts moji_a.join(" & ")<<" → "<<moji_a.join
        n += 1
    end
end
if n==0
    STDERR.puts "処理した文字数:0"
else
    STDERR.puts "↑","上記の文字を処理しました"
end

 ───────────────────────────────────────  ■題名 : Re(2):外部変形コマンドを探しております  ■名前 : 構造関係者  ■日付 : 15/05/12(火) 14:20  -------------------------------------------------------------------------
   kojima 様 ありがとうございます

いろいろなkojima様の外部変形を利用させていただいております。
改めて御礼申し上げます。

3万文字程度を実行しましたが少し時間がかかりますが見事に結合してくれました
今までの苦労は何だったのか

本当に有意義な外部変形を感謝しております。
今後の、益々のご活躍をお祈りして、お礼の言葉とさせていただきます。

ありがとうございました。

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