Jw_cad 相談室−その2 New

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

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

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


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

複数jwwファイルの図番(同位置の文字列)の一括変換 kubo 20/2/6(木) 10:30

その2 kojima 20/2/6(木) 23:37

その2
 kojima  - 20/2/6(木) 23:37 -
以下、前文からの続き


$stdout=open("jwc_temp.txt","w")
x_a=[];y_a=[]
puts "hd"
while ARGF.gets
xy=$_.split
if xy[0]=~/^hq/
elsif xy[0]=~/^hzs/
p_x=xy[1].to_f
p_y=xy[2].to_f
elsif xy[0]=~/^file=/
siz=size(xy[0])
if siz==5
STDERR.puts("ファルが保存されていないのでフォルダ名が特定できません")
STDERR.puts("終了します")
exit
end
path_file=xy[0][5..-1]
path,file=File.split(path_file)
# path.gsub!("\\","/")
elsif xy[0]=~/^hp\d/
x_a<<xy[1].to_f
y_a<<xy[2].to_f
elsif xy[0]=~/^ch/
x_min=x_a.min;x_max=x_a.max
y_min=y_a.min;y_max=y_a.max
if $_=~/\"/
moji=$'.chomp
moji_zahyo=$`
end
x=xy[1].to_f;y=xy[2].to_f;
if x_min<x && x_max>x &&y_min<y && y_max>y
if moji_hash[moji]
printf("%s \"%s\n",moji_zahyo,moji_hash[moji])
else
print $_
end
else
print $_
end

else
print $_
end
end
$stdout.close
x_min=x_a.min-p_x/2;x_max=x_a.max-p_x/2
y_min=y_a.min-p_y/2;y_max=y_a.max-p_y/2
file_a=Dir.entries(path).select{|item|item=~/\.jww$/i}
file_a.each{|file1|
i=0;data="";$data=""
open(path+"\\"+file1,"rb"){|f|data=f.read}
#◎jwwデータの宣言
i += 8
#◎図面のバージョン
b_n=data[i,4].unpack("L")[0];
if b_n<420
STDERR.printf("バージョンNO%dには未対応です。処理を中止します\n",b_n)
exit
end
i += 4
#◎メモ欄の記載文
memo_byte=data[i,1].unpack("C")[0];
i += 1+memo_byte
#◎図面サイズ
i += 4
#◎レイヤグループ・レイヤ状態
i += 4
0.upto(15){|i1|
data[i,4].unpack("L")[0]
i += 20
0.upto(15){|i2|i += 8}
}
i += 156
#◎レイヤ名・レイヤグループ名
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 += 1140
0.upto(256){|i1|i += 8}
0.upto(256){|i1|
lcn_byte=data[i,1].unpack("C")[0]
i += 1+lcn_byte
i += 16
}
#◎SXF対応拡張線種定義拡張
0.upto(32){|i1|i += 16}
0.upto(32){|i1|
ltn_byte=data[i,1].unpack("C")[0]
i += 1+ltn_byte
i += 84
}
i += 380
#◎図形(線・円・点・文字・ソリッド・寸法図形・ブロック図形)の総数
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
i2=i
$data<<data[0,i2]
moji_n=0
#◎図形(線・円・点・文字・ソリッド・寸法図形・ブロック図形)のデータNOの検出
hash={"CDataSen"=>47,"CDataTen"=>35,"CDataEnko"=>75,"CDataSolid"=>79,"CDataBlock"=>59}
data_moji="";array2=[];no=0;j=0;has2={}
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
$data<<data[i2..i-1];i2=i
i=data_no_collect(data,i,array2,data_moji,no,hash,j,b_n)
if data_moji=="CDataMoji"
moji_no=ch_henkan(data,i2,data_moji,b_n,moji_hash,x_min,y_min,x_max,y_max)
moji_n +=moji_no
else
$data<<data[i2..i-1]
end
i2=i
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
}
$data<<data[i2..i-1];i2=i
i=data_next(data,i,data_moji,hash,b_n)
if data_moji=="CDataMoji"
moji_no=ch_henkan(data,i2,data_moji,b_n,moji_hash,x_min,y_min,x_max,y_max)
moji_n +=moji_no
else
$data<<data[i2..i-1]
end
i2=i
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
}
$data<<data[i2..i-1];i2=i
i=data_next(data,i,data_moji,hash,b_n)
if data_moji=="CDataMoji"
moji_no=ch_henkan(data,i2,data_moji,b_n,moji_hash,x_min,y_min,x_max,y_max)
moji_n +=moji_no
else
$data<<data[i2..i-1]
end
i2=i
end
end
$data<<data[i..-1]
if moji_n>0
new_file=path+"\\"+file1+".jww"
open(new_file,"wb"){|f|f.write $data}
STDERR.puts("#{new_file}を作成しました")
else
STDERR.puts("#{file1}は変更無し")
end
}
__END__
:end

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Ed...@ai126198129255.60.access-internet.ne.jp>
・ツリー全体表示

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

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