過去ログ

                                Page     250
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼仮点消去  ケンジ 16/04/15(金) 16:26
   ┗Re(1):仮点消去  kubo 16/04/15(金) 18:33
      ┗Re(2):仮点消去  ケンジ 16/04/16(土) 11:03
         ┗Re(3):仮点消去  kojima 16/04/17(日) 11:45
            ┗補助色の実点を仮点に変更  kojima 16/04/17(日) 11:53

 ───────────────────────────────────────
 ■題名 : 仮点消去
 ■名前 : ケンジ
 ■日付 : 16/04/15(金) 16:26
 -------------------------------------------------------------------------
   お世話になります。

仮点消去について教えてください。

普通では、点コマンド→仮点消去または、全仮点消去になります。

希望は、範囲選択→属性選択→仮点指定→実点、指定線色に変更したい。

要は、仮点を範囲選択で補助線色の実点にしたい。

外部変形とかで、ありますか?

範囲選択で、仮点が指定できないのは意味がある?

 ───────────────────────────────────────  ■題名 : Re(1):仮点消去  ■名前 : kubo  ■日付 : 16/04/15(金) 18:33  -------------------------------------------------------------------------
   ▼ケンジさん:
>要は、仮点を範囲選択で補助線色の実点にしたい。
>
>外部変形とかで、ありますか?


こちらにあるようです。ご参考まで。

http://afsoft.jp/program/p06.html

 ───────────────────────────────────────  ■題名 : Re(2):仮点消去  ■名前 : ケンジ  ■日付 : 16/04/16(土) 11:03  -------------------------------------------------------------------------
   ▼kuboさん:
返信ありがとうございます。

ファイル単独の仮点変換だけなら、これで問題ありません。

JW作業中に、範囲選択して仮点も一緒に移動したり消去したりしたかったのです。

現状は、範囲全選択しか仮点が指定できないので。

 ───────────────────────────────────────  ■題名 : Re(3):仮点消去  ■名前 : kojima  ■日付 : 16/04/17(日) 11:45  -------------------------------------------------------------------------
   ▼ケンジさん:
>ファイル単独の仮点変換だけなら、これで問題ありません。
>JW作業中に、範囲選択して仮点も一緒に移動したり消去したりしたかったのです。

仮点を補助色の実点に変更すれば、
範囲選択して仮点(補助色の実点)も一緒に移動したり消去したりできます。

以下は、batファイルにrubyスクリプトを記述するタイプの外部変形。
コピペ後、全角スペースを半角スペースに一括置換してください。

※行頭に余分なスペースが追加される場合があります。
batの部分だけ、行頭のスペースを削除してください。


@REM 仮点を補助色の実点に変換
@echo off
REM #jww
REM #cd
REM #hf
REM #h0
REM #e
copy jwc_temp.txt temp.txt>nul
ruby -x %~f0 temp.txt
pause
goto end
#!ruby -Ks
include Math
#data_mojiとdata_noをarray2(二重配列)に収集する。
def data_no_collect(data,i,array2,data_moji,no,hash,j)
    data_no=no+j
    array2<<[data_moji,data_no]
    i=data_next(data,i,data_moji,hash)
    return i
end
#data_mojiのバイト数の分だけiを次へ進める。
def data_next(data,i,data_moji,hash)
    if data_moji=="CDataMoji"
        f_i=data[i+83,1].unpack("C")[0]
        m_i=data[i+84+f_i,1].unpack("C")[0]
        if m_i==255
            m_i=data[i+85+f_i,2].unpack("S")[0]            
            m_byte=83+f_i+m_i+4
        else
            m_byte=83+f_i+m_i+2
        end
        hash[data_moji]=m_byte
        i += hash[data_moji]
    elsif data_moji=="CDataSunpou"
        f_i=data[i+145,1].unpack("C")[0]
        m_i=data[i+146+f_i,1].unpack("C")[0]
        m_byte=147+f_i+m_i+236
        hash[data_moji]=m_byte
        i += hash[data_moji]
    elsif data_moji=="CDataSolid"
        if data[i+5,1].unpack("C")[0] == 10
            i += hash[data_moji]+4
        else
            i += hash[data_moji]
        end
    elsif data_moji=="CDataTen"
        if data[i+4,1].unpack("C")[0] == 100
            i += hash[data_moji]+20
        else
            pt_change(data,i)
            i += hash[data_moji]
        end
    else
        i += hash[data_moji]
    end
    return i
end
#仮点を補助色の実点に変更
def pt_change(data,i)
    pl,lt,lc,lw,ly,lg,z=data[i,15].unpack("LCSSSSS")
    flg=data[i+31,4].unpack("L")[0]
    if flg==1
        data[i+5,2]=[9].pack("S")
        data[i+31,4]=[0].pack("L")
    end
end
#以降メインルーチン
file=""
while ARGF.gets
    if $_=~/^file=/
        file=$'.chomp
    end
end
begin
    i=0
    data=""
    open(file,"rb"){|f|data=f.read}
    i=data.index("CData")
    if data[i-12,2].unpack("S")[0]==255*256+255
        i -= 12
    else
        i -= 8
    end
    #◎図形(線・円・点・文字・ソリッド・寸法図形・ブロック図形)の総数
    int1=data[i,1].unpack("C")[0];int2=data[i+1,1].unpack("C")[0]
    if int1==255 && int2==255
        i += 2
        n2=data[i,4].unpack("L")[0]
        i += 4
    else
        n2=data[i,2].unpack("S")[0]
        i += 2
    end
    #◎図形(線・円・点・文字・ソリッド・寸法図形・ブロック図形)のデータNOの検出
    hash={"CDataSen"=>47,"CDataTen"=>35,"CDataEnko"=>75,"CDataSolid"=>79,"CDataBlock"=>59}
    data_moji="";array2=[];no=0;j=0
    while no<n2
        no += 1
        int=data[i,2].unpack("S")[0]
        if int==255*256+255
            i += 4
            n=data[i,2].unpack("S")[0]        
            i += 2
            data_moji=data[i,n]
            i += n
            i=data_no_collect(data,i,array2,data_moji,no,hash,j)
            j += 1
        elsif int==127*256+255
            i += 2
            n=data[i,4].unpack("L")[0]-(128*256*256*256)
            i += 4
            array2.each{|item|
                if item[1] == n
                    data_moji=item[0]
                    break
                end
            }
            i=data_next(data,i,data_moji,hash)
        else
            n=data[i,2].unpack("S")[0]-(128*256)            
            i += 2
            array2.each{|item|
                if item[1] == n
                    data_moji=item[0]
                    break
                end
            }
            i=data_next(data,i,data_moji,hash)
        end
    end
    file2=file+".jww"
    open(file2,"wb"){|f|f.write data}
    system("start c:\\jww\\jw_win #{file2}")
rescue
    STDERR.puts "エラーが発生しました"
end
__END__
:end

 ───────────────────────────────────────  ■題名 : 補助色の実点を仮点に変更  ■名前 : kojima  ■日付 : 16/04/17(日) 11:53  -------------------------------------------------------------------------
   以下は、補助色の実点を仮点に変更する外部変形です。
仮点を補助色の実点に変更→範囲選択して、移動or消去→補助色の実点を仮点に変更。
まわりくどい方法ですが、仮点を範囲選択して移動or消去と同じ。


@REM 補助色の実点を仮点に変換
@echo off
REM #jww
REM #cd
REM #hf
REM #h0
REM #c点色 無指定:2/_/a
REM #e
copy jwc_temp.txt temp.txt>nul
ruby -x %~f0 temp.txt %1
goto end
#!ruby -Ks
include Math
$pn=2
while ARGV.size>1
    case argument=ARGV.pop
    when /\/a/
        $pn=argument[2..-1].to_i    
    end
end
#data_mojiとdata_noをarray2(二重配列)に収集する。
def data_no_collect(data,i,array2,data_moji,no,hash,j)
    data_no=no+j
    array2<<[data_moji,data_no]
    i=data_next(data,i,data_moji,hash)
    return i
end
#data_mojiのバイト数の分だけiを次へ進める。
def data_next(data,i,data_moji,hash)
    if data_moji=="CDataMoji"
        f_i=data[i+83,1].unpack("C")[0]
        m_i=data[i+84+f_i,1].unpack("C")[0]
        if m_i==255
            m_i=data[i+85+f_i,2].unpack("S")[0]            
            m_byte=83+f_i+m_i+4
        else
            m_byte=83+f_i+m_i+2
        end
        hash[data_moji]=m_byte
        i += hash[data_moji]
    elsif data_moji=="CDataSunpou"
        f_i=data[i+145,1].unpack("C")[0]
        m_i=data[i+146+f_i,1].unpack("C")[0]
        m_byte=147+f_i+m_i+236
        hash[data_moji]=m_byte
        i += hash[data_moji]
    elsif data_moji=="CDataSolid"
        if data[i+5,1].unpack("C")[0] == 10
            i += hash[data_moji]+4
        else
            i += hash[data_moji]
        end
    elsif data_moji=="CDataTen"
        if data[i+4,1].unpack("C")[0] == 100
            i += hash[data_moji]+20
        else
            pt_change(data,i)
            i += hash[data_moji]
        end
    else
        i += hash[data_moji]
    end
    return i
end
#仮点を補助色の実点に変更
def pt_change(data,i)
    pl,lt,lc,lw,ly,lg,z=data[i,15].unpack("LCSSSSS")
    if lc==9 && lt != 100
        data[i+5,2]=[$pn].pack("S")
        data[i+31,4]=[1].pack("L")
    end
end
#以降メインルーチン
file=""
while ARGF.gets
    if $_=~/^file=/
        file=$'.chomp
    end
end
begin
    i=0
    data=""
    open(file,"rb"){|f|data=f.read}
    i=data.index("CData")
    if data[i-12,2].unpack("S")[0]==255*256+255
        i -= 12
    else
        i -= 8
    end
    #◎図形(線・円・点・文字・ソリッド・寸法図形・ブロック図形)の総数
    int1=data[i,1].unpack("C")[0];int2=data[i+1,1].unpack("C")[0]
    if int1==255 && int2==255
        i += 2
        n2=data[i,4].unpack("L")[0]
        i += 4
    else
        n2=data[i,2].unpack("S")[0]
        i += 2
    end
    #◎図形(線・円・点・文字・ソリッド・寸法図形・ブロック図形)のデータNOの検出
    hash={"CDataSen"=>47,"CDataTen"=>35,"CDataEnko"=>75,"CDataSolid"=>79,"CDataBlock"=>59}
    data_moji="";array2=[];no=0;j=0
    while no<n2
        no += 1
        int=data[i,2].unpack("S")[0]
        if int==255*256+255
            i += 4
            n=data[i,2].unpack("S")[0]        
            i += 2
            data_moji=data[i,n]
            i += n
            i=data_no_collect(data,i,array2,data_moji,no,hash,j)
            j += 1
        elsif int==127*256+255
            i += 2
            n=data[i,4].unpack("L")[0]-(128*256*256*256)
            i += 4
            array2.each{|item|
                if item[1] == n
                    data_moji=item[0]
                    break
                end
            }
            i=data_next(data,i,data_moji,hash)
        else
            n=data[i,2].unpack("S")[0]-(128*256)            
            i += 2
            array2.each{|item|
                if item[1] == n
                    data_moji=item[0]
                    break
                end
            }
            i=data_next(data,i,data_moji,hash)
        end
    end
    file2=file+".jww"
    open(file2,"wb"){|f|f.write data}
    system("start c:\\jww\\jw_win #{file2}")
rescue
    STDERR.puts "エラーが発生しました"
end
__END__
:end

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