Indexへ
(6137)//【6050】→(6053)
------------------------
【タイトル】範囲内の数字の単位一括変換
【記事番号】 6050 (*)
【 日時 】05/11/08 20:00
【 発言者 】mitchan

いつもお世話になっています。
指定した範囲内の数字の単位を一括変換できますでしょうか?。どなたか教えてください。


Indexへ
(6050)←【6053】→(6078)
------------------------
【タイトル】Re(1):範囲内の数字の単位一括変換
【記事番号】 6053 (6050)
【 日時 】05/11/08 22:20
【 発言者 】350。

▼mitchanさん:
>指定した範囲内の数字の単位を一括変換できますでしょうか?。

[作図][文字]コマンドよりコントロールバーの[範囲選択]選択後に、
[NOTEPAD]等の外部エディタを起動して、置換する方法があります。
外部エディタは、ワードパット等の置換機能があるものが必要です。
WINDOWS XPでしたら[NOTEPAD]も置換機能があります。


Indexへ
(6053)←【6078】→(6080)
------------------------
【タイトル】Re(1):単位一括変換の意味
【記事番号】 6078 (6050)
【 日時 】05/11/09 18:26
【 発言者 】コジマ

▼mitchanさん:
>いつもお世話になっています。
>指定した範囲内の数字の単位を一括変換できますでしょうか?。どなたか教えてください。

単位一括変換の意味がよく分かりません。

単に、mmをm のように文字変換するのならば、他の方のレスのように、外部エディッタで一括置換します。

数字の位取りを変更するのであれば、(1,000,000→1,000)
外部変形を使うしかない?(公開されているものがあるかも?)

mm→m m→mm(位取りを変更)については、オリジナルがあります。
(公開はしていません)


Indexへ
(6078)←【6080】→(6083)
------------------------
【タイトル】Re(2):単位一括変換の意味
【記事番号】 6080 (6078)
【 日時 】05/11/09 18:50
【 発言者 】mitchan

350。さん、コジマさんありがとうございます。質問の仕方が悪かったようです。コジマさんのおっしゃった様に、寸法表示をmm→mにしたかったのです。mm単位で表示した図面をm単位に変えてほしいと言われました。全部の寸法を拾い直しても大した手間ではないのですが、もし簡単に変換できる方法があれば便利かなと思って・・・。どこかで外変を探してみます。ありがとうございました。


Indexへ
(6080)←【6083】→(6094)
------------------------
【タイトル】Re(3):単位一括変換の意味
【記事番号】 6083 (6080)
【 日時 】05/11/09 19:01
【 発言者 】350。

▼mitchanさん:
>350。さん、コジマさんありがとうございます。質問の仕方が悪かったようです。コジマさんのおっしゃった様に、寸法表示をmm→mにしたかったのです。mm単位で表示した図面をm単位に変えてほしいと言われました。全部の寸法を拾い直しても大した手間ではないのですが、もし簡単に変換できる方法があれば便利かなと思って・・・。どこかで外変を探してみます。ありがとうございました。

外部エディタを、エクセル等の表計算ソフトと或いは表計算で加工すれば可能かと思います。


Indexへ
(6083)←【6094】→(6115)
------------------------
【タイトル】Re(3):単位一括変換の意味
【記事番号】 6094 (6080)
【 日時 】05/11/09 22:57
【 発言者 】コジマ

▼mitchanさん:
>350。さん、コジマさんありがとうございます。質問の仕方が悪かったようです。コジマさんのおっしゃった様に、寸法表示をmm→mにしたかったのです。mm単位で表示した図面をm単位に変えてほしいと言われました。全部の寸法を拾い直しても大した手間ではないのですが、もし簡単に変換できる方法があれば便利かなと思って・・・。どこかで外変を探してみます。ありがとうございました。

公開されているものもあると思いますが、以下オリジナル外変です。

mswin32 版 Ruby のインストールが必要です。
以下で入手できます。
http://www61.tok2.com/home2/gravelroad/tips/inst_msw.html

◎バッチファイル(ファイル名 単位変更.bat)
以下の文をコピペした後、全角スペースを半角スペースに一括置換してください。

@REM 数値の単位を変更する
@echo off
REM #jww
REM #cd
REM #zz
REM #zc
REM #h3
REM #hc文字を範囲選択してください
REM #k3桁毎区切文字の有無 |1)有(L)|2)無(R)| /_/a
REM #c区切文字の入力  無指定 : コンマ( , ) /_/b
REM #c小数点以下有効桁数  無指定 : 0 /_/c
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 単位変更.rb temp.txt %1 %2 %3> jwc_temp.txt

◎スクリプトファイル(ファイル名 単位変更.rb)
以下の文をコピペした後、全角スペースを半角スペースに一括置換してください。

puts "hd";$kugiri="1";$moji="\,";$keta=0
while ARGV.size > 1
    case argument=ARGV.pop
        when /\/a/
            $kugiri=argument[2..-1]
        when /\/b/
            $moji=argument[2..-1]
            if argument[2..-1]==""
                $moji="\s"
            end
        when /\/c/
            $keta=argument[2..-1]
    end
end
def tani_henko(s)
    hash1={"0"=>"0","1"=>"1","2"=>"2","3"=>"3","4"=>"4","5"=>"5",
    "6"=>"6","7"=>"7","8"=>"8","9"=>"9","."=>".",","=>",",
    "+"=>"+","−"=>"-","__"=>"_","     "=>" "}
    if s=~/^\d|^-/ or hash1.key?(s[0,2])
        s.tr!("\_\,\s,  ","")
        a=s.split('')
        if a[0].size==2
            0.upto(a.size-1){|i|a[i]=hash1[a[i]]}
        end
        a2=ika(((a.join).to_f/1000).to_s)
        if a.include?(nil)!=true && a.join=~/^\d+\.*\d*$/
            hash2=hash1.invert
            s.split('')[0].size==2 ?
                a3=(a2.split('')).collect{|item|hash2[item]}.join : a3=a2
            if $kugiri=="1"
                return conma(a3,3,$moji)
            else
                return a3
            end
        else
            return s
        end
    else
        return s
    end
end
def ika(x)
    if $keta=="0"
        a=((x.to_f).round).to_s
        return a
    else
        keta=$keta.to_i
        a=(((x.to_f)*(10**keta)).round/(10**keta).to_f).to_s
        if a=~ /.0$/
            a=(a.to_i).to_s
        end
        return a
    end
end
def conma(s,i,w)
    hash1={"0"=>"0","1"=>"1","2"=>"2","3"=>"3","4"=>"4","5"=>"5",
    "6"=>"6","7"=>"7","8"=>"8","9"=>"9","."=>".",","=>",",
    "+"=>"+","−"=>"-","__"=>"_","     "=>" "}
    if s=~/^\d|^-/ or hash1.key?(s[0,2])
        if s=~/\./ or s=~/./
            moji=$`
            ika=$&+$'
        else
            moji=s
            ika=""
        end
        moji.tr!("#{w}\_\,\s,, ","")
        a=moji.split('')
        if a[0,1].size==2
            0.upto(a.size-1){|i|a[i]=hash1[a[i]]}
        end
        a.reverse!
        n=0;b=[]
        a.each{|item|n!=0 && n%(i.to_i)==0 ? b<<(item+w):b<<(item)
            n+=1}
        if hash1.key?(s[0])
            hash2=hash1.invert
            0.upto(b.size-1){|i|b[i]=hash2[b[i]]}
        end
        return(b.reverse.join+ika)
    else
        return s
    end
end

while ARGF.gets
    xy=split
    if xy[0]=~/^hq/
    elsif xy[0]=~/^ch|^cs/
        if $_=~/\"/
            moji=$'.chop
            puts $`+$&+tani_henko(moji)
        end
    else
        print $_
    end
end


Indexへ
(6094)←【6115】→(6127)
------------------------
【タイトル】実行できない
【記事番号】 6115 (6094)
【 日時 】05/11/10 14:16
【 発言者 】mitchan

皆さん、度々のご回答ありがとうございます。
コジマさん、早速試してみましたが、一瞬DOSの画面が出てすぐ消えてしまい実行されませんでした。外変は使ったことが無かったのですが、ちなみに三斜計算は実行できました。『mswin32 版 Ruby』 のインストール先は指定どおりでよかったのでしょうか?。それともJWWのホルダーでしょうか?。それと、『単位変更.rb』のファイルの中に、『,』全角コンマが数箇所ありますが関係ないですよね。


Indexへ
(6115)←【6127】→(6139)
------------------------
【タイトル】Re(1):実行できない
【記事番号】 6127 (6115)
【 日時 】05/11/10 18:24
【 発言者 】コジマ

▼mitchanさん:
>皆さん、度々のご回答ありがとうございます。
>コジマさん、早速試してみましたが、一瞬DOSの画面が出てすぐ消えてしまい実行されませんでした。外変は使ったことが無かったのですが、ちなみに三斜計算は実行できました。『mswin32 版 Ruby』 のインストール先は指定どおりでよかったのでしょうか?。それともJWWのホルダーでしょうか?。それと、『単位変更.rb』のファイルの中に、『,』全角コンマが数箇所ありますが関係ないですよね。

寸法図形で解決されたようですが。

この外部変形は、コピペして問題なく実行できました。
原因は、以下の二つが考えられます。


1、全角スペース → 半角スペース の一括置換

2、『mswin32 版 Ruby』 を解凍すると、サブフォルダが作成される場合があります。
サブフォルダの中のフォルダとファイルを指定されたフォルダに移動します。
(osがwin xp の場合、c:\windows\system32)
サブフォルダごと移動すると、実行されません。


Indexへ
(6127)←【6139】→(6142)
------------------------
【タイトル】解決しました
【記事番号】 6139 (6127)
【 日時 】05/11/11 13:37
【 発言者 】mitchan

コジサさん、度々のご回答ありがとうございます。ご指摘のように、『mswin32 版 Ruby』がホルダーに入った状態で解凍されていました。中身を移動したところ正常に変換できるようになりました。有難うございました。
そこでさらにお願いをしたいのですが、小数点以下の数値が『0』の場合の表示方法を指定桁数だけ表示するにはどうすればいいのでしょうか。また逆の、m→mmの場合はどうすればいいのか教えてください。外変をアレンジすればいいとは思うのですが、どこをどうすればいいのかチンプンカンプンで・・・。


Indexへ
(6139)←【6142】→(6154)
------------------------
【タイトル】Re(1):解決しました
【記事番号】 6142 (6139)
【 日時 】05/11/11 14:44
【 発言者 】コジマ

▼mitchanさん:
>コジサさん、度々のご回答ありがとうございます。ご指摘のように、『mswin32 版 Ruby』がホルダーに入った状態で解凍されていました。中身を移動したところ正常に変換できるようになりました。有難うございました。
>そこでさらにお願いをしたいのですが、小数点以下の数値が『0』の場合の表示方法を指定桁数だけ表示するにはどうすればいいのでしょうか。

単位変更.rb の 42行目の def ika(x) 〜 end の部分を以下のように書き換える。

def ika(x)
    keta=$keta.to_i
    a=(((x.to_f)*(10**keta)).round/(10**keta).to_f).to_s
    if keta==0
        a=(a.to_i).to_s
    else
        if a=~ /\./
            size=$'.split('').size
            if keta>size
                a=a+"0"*(keta-size)
            end
        end
    end
    return a
end


>また逆の、m→mmの場合はどうすればいいのか教えてください。外変をアレンジすればいいとは思うのですが、どこをどうすればいいのかチンプンカンプンで・・・。

単位変更.rb の 25行目を以下のように書き換える。

a2=ika(((a.join).to_f/1000).to_s) → a2=ika(((a.join).to_f*1000).to_s)


Indexへ
(6142)←【6154】→(6120)
------------------------
【タイトル】Re(2):解決しました
【記事番号】 6154 (6142)
【 日時 】05/11/12 08:46
【 発言者 】mitchan

コジマさん、早速ご無理を聞いていただきまして有難うございました。今までソフトを使うことしかなかったのですが、これからは少しづつでも勉強をしていきたいと思います。本当に有難うございました。


Indexへ
(6154)←【6120】→(6122)
------------------------
【タイトル】Re(3):寸法表示の数値だけなら
【記事番号】 6120 (6080)
【 日時 】05/11/10 14:56
【 発言者 】白髪のおっちゃん

▼mitchanさん:
>350。さん、コジマさんありがとうございます。質問の仕方が悪かったようです。コジマさんのおっしゃった様に、寸法表示をmm→mにしたかったのです。mm単位で表示した図面をm単位に変えてほしいと言われました。全部の寸法を拾い直しても大した手間ではないのですが、もし簡単に変換できる方法があれば便利かなと思って・・・。どこかで外変を探してみます。ありがとうございました。

寸法図形であるなら
寸法設定を変更すれば、一番簡単ですよ
寸法単位をmmからmに変更
小数点以下3桁にし
設定欄の一番下に記載されている
寸法線と値を[寸法図形}・・・にチェック
寸法図形を複写・パラメトリック・・・にチェック
OK
範囲コマンドで全選択・属性変更
寸法図形の値更新
OK
上記の操作で m単位に変わります。

これでは、だめでしょうか
以上


Indexへ
(6120)←【6122】//(6055)
------------------------
【タイトル】寸法図形で解決
【記事番号】 6122 (6120)
【 日時 】05/11/10 16:18
【 発言者 】mitchan

白髪のおっちゃんさん、ありがとうございます。おっしゃった要領で解決しました。『寸法図形』ってどんなとき使うのか分からなくて使った事がありませんでした。またひとつ勉強になりました。