Jw_cad 相談室−その2 New

 Jw_cad についての相談の場としてお使いください
情報の交換には Jw_cad 情報交換室 をご利用ください
なお、情報交換室と相談室の両方に同じ内容を投稿するのはご遠慮ください

2009年9月以前の発言過去ログのページからご覧ください。

それ以降の過去ログは消失しています。
申し訳ありませんが、復活の予定はありません。


新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム
11 / 301 ツリー    ←次へ | 前へ→

複数のファイルの図面の線種など一括変更の仕方 加藤 21/11/10(水) 10:01

Re:pathの設定が必要 加藤 21/11/13(土) 22:58
行頭の半角スペースと文字コード kojima 21/11/14(日) 13:49
Re:行頭の半角スペースと文字コード 加藤 21/11/14(日) 21:12

Re:pathの設定が必要
 加藤  - 21/11/13(土) 22:58 -
▼kojimaさん:
>以下のbatファイルをコピペして実行してみてください。
>
>
>c:\ruby\bin\ruby -x %~f0
>pause
>goto end
>#!ruby -Ks
>$lc=1
>#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"
> font_change(data,i,data_moji)
>
> f_i=data[i+83,1].unpack("C")[0]
> m_i=data[i+84+f_i,1].unpack("C")[0]
> m_byte=83+f_i+m_i+2
> hash[data_moji]=m_byte
> i += hash[data_moji]
> elsif data_moji=="CDataSunpou"
> lc_change2(data,i,data_moji)
> font_change2(data,i,data_moji)
>
> 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] == 10
> i += hash[data_moji]+4
> else
> i += hash[data_moji]
> end
> elsif data_moji=="CDataTen"
> lc_change(data,i,data_moji)#線・円の場合は、$str_hに対応する線色に変更
> if data[i+4] == 100
> i += hash[data_moji]+20
> else
> i += hash[data_moji]
> end
> else
> lc_change(data,i,data_moji)#線・円の場合は、$str_hに対応する線色に変更
> i += hash[data_moji]
> end
> return i
>end
>#線・円を線色1に変更する
>def lc_change(data,i,data_moji)
> data[i+5,2]=[$lc].pack("S")
>end
>#寸法図形を線色1に変更する
>def lc_change2(data,i,data_moji)
> data[i+20,2]=[$lc].pack("S")
>end
>#文字色を線色1 文字のフォントをMS 明朝にする
>def font_change(data,i,data_moji)
> data[i+5,2]=[$lc].pack("S")
> data[i+47,4]=[0].pack("L")
> f_i=data[i+83,1].unpack("C")[0]
> data[i+83,1]=[9].pack("C")
> data[i+83+1,f_i]="MS 明朝".unpack("C*").pack("C*")
>end
>#寸法図形の線色1 フォントをMS 明朝にする
>def font_change2(data,i,data_moji)
> data[i+67,2]=[$lc].pack("S")
> data[i+109,4]=[0].pack("L")
> f_i=data[i+145,1].unpack("C")[0]
> data[i+145,1]=[9].pack("C")
> data[i+145+1,f_i]="MS 明朝".unpack("C*").pack("C*")
>end
>#メインルーチン
>path=Dir.pwd
>file_a=(Dir.entries(path)).select{|item|item=~/\.jww$/i}
>file_a.each{|file|
> base_name = $` if file =~ /\.jww$/i
> new_file_neme = base_name+"_2"+".jww"
> begin
> i=0
> data=""
> open(file,"rb"){|f|data=f.read}
> #◎jwwデータの宣言
> i += 8
> #◎図面のバージョン
> b_n=data[i,4].unpack("L")[0]
> i += 4
> if b_n<351
> puts "バージョンNO#{b_n}には対応していません。パスします";next
> end
> memo_byte=data[i,1].unpack("C")[0]
> i += 1+memo_byte
> i += 8
> 0.upto(15){|i1|i += 20
> 0.upto(15){|i2|i += 8}
> }
> i += 14*4#ダミー
> i += 100
> 0.upto(15){|i1|
> 0.upto(15){|i2|byte=data[i,1].unpack("C")[0];i += byte+1}
> }
> 0.upto(15){|i1|byte=data[i,1].unpack("C")[0];i += byte+1}
> i += 96
> if b_n>=300
> 1.upto(8){|i1|i += 28}
> else
> 1.upto(4){|i1|i += 24}
> end
> if b_n >=300
> i += 44
> if b_n <404
> i += 12
> else
> i += 12
> end
> end
> i +=2820
> 0.upto(256){|i1|lcn_byte=data[i,1].unpack("C")[0];i += 1+lcn_byte;i += 16}
> i+=528
> 0.upto(32){|i1|
> ltn_byte=data[i,1].unpack("C")[0];i += 1+ltn_byte;i += 4
> i+=80
> }

ありがとうございます。
この上のものと続きの中のやつを上下つなげてひとつのbatファイルとして保存して実行しましたが。うまくいきませんでした。

d;/フォルダー名/バッチファイル名.bat:210:syntax error,unexpected tCONSTANT,rxpecting KEND
int=data[i,2]unpack("s")[0]

みたいなものが30行ほどでます。
コピペが出来なかったので見ながら打ち込みましたから間違いがあるかもしれませんが・・・

そろそろ諦めたほうがよさそうですかね。

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44@M014011067097.v4.enabler.ne.jp>
・ツリー全体表示

行頭の半角スペースと文字コード
 kojima  - 21/11/14(日) 13:49 -
この掲示板を経由してコピペすると、行頭に半角スペースが付加される場合があります。
その場合は、行頭の半角スペースを削除する。

特に、文頭から4行

ruby -x %~f0
pause
goto end
#!ruby -Ks



末尾から2行

__END__
:end

の行頭に半角スペースがあってはいけません。

メモ帳(notepad)にコピペした場合
保存する時の文字コードをANSIにしてください。

引用なし

パスワード


<Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; MALNJS; rv:11.0) like Gecko@ai126173128132.46.access-internet.ne.jp>
・ツリー全体表示

Re:行頭の半角スペースと文字コード
 加藤  - 21/11/14(日) 21:12 -
▼kojimaさん:
>この掲示板を経由してコピペすると、行頭に半角スペースが付加される場合があります。
>その場合は、行頭の半角スペースを削除する。
>
>特に、文頭から4行
>
>ruby -x %~f0
>pause
>goto end
>#!ruby -Ks
>
>と
>
>末尾から2行
>
>__END__
>:end
>
>の行頭に半角スペースがあってはいけません。
>
>メモ帳(notepad)にコピペした場合
>保存する時の文字コードをANSIにしてください。

kojima様、出来ました!

batファイルをメモ帳で開いて半角スペースを確認しようとしたら、日本語の部分が文字化けしてるのに気が付き、原因がわからないのでもう一度コピペして保存しなおしたら見事に出来ました。

ブロック図形は解除されていませんでしたがペン色文字色フォントの変更は出来ました。
ブロック図形の解除ぐらいはすぐに出来るので大変助かりました。

面倒なご質問に親切に対応していただき本当にありがとうございました。

感謝しております。

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53@M014011067097.v4.enabler.ne.jp>
・ツリー全体表示

11 / 301 ツリー    ←次へ | 前へ→
新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム
 911336
ページ:  ┃  記事番号:  

C-BOARD Moyuku v1.03b5
Jw_cad Copyright (C)1997-2021 Jiro Shimizu & Yoshifumi Tanaka