Jw_cad 相談室−その2 New

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

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

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


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

Rubyでの参考例
 kojima  - 17/7/18(火) 22:50 -
▼BOBさん:
>画像処理で線分認識し、得た線分情報をCADファイル化したい
>http://www.jwcad.net/jwdatafmt.txt
>縦線1本描いたCADデータを上記と参照するも、雑な説明でとても解りにくい

そのCADデータ上で、以下の外部変形を実行してみてください。
バッチファイルにRubyスクリプトを記述するタイプ。
Rubyのインストールが必要
https://rubyinstaller.org/downloads/

そのCADデータのヘッダー情報をまるまるコピーして、中央に図寸100mm
の正方形が描画されたJWWファイル(temp.jww)を作成して開きます。

以下の文をコピペして適当な名前をつけて保存してください。(拡張子.bat)


@REM 四角形を描画したJWWファイルの作成
@echo off
REM #jww
REM #cd
REM #hf
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt
pause
goto end
#!ruby -Ks
path=Dir.pwd
while ARGF.gets
if $_ =~ /^file=/
file=$'.chomp
end
end
if file==""
open("jwc_temp.txt","w"){|f|f.puts "h#ファイルが保存されていません"}
exit
else
open("jwc_temp.txt","w"){|f|f.puts "h#"}
end

i=0
data=""
open(file,"rb"){|f|data=f.read}
i += 8
#◎図面のバージョン
b_n=data[i,4].unpack("L")[0];
i += 4
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.to_f >=3.0
1.upto(8){|i1|i += 28}
else
1.upto(4){|i1|i += 24}
end
if b_n.to_f >=3.0
i += 44#ダミー
if b_n.to_f <4.04
i += 12#ダミー
else
i += 12
end
end
0.upto(9){|i1|i += 8}
i += 8
0.upto(9){|i1|i += 8}
0.upto(9){|i1|i += 16}
2.upto(9){|i1|i += 16}
1.upto(5){|i1|i += 20}
6.upto(9){|i1|i += 16}
i += 144
0.upto(256){|i1|i += 8}
0.upto(256){|i1|
lcn_byte=data[i,1].unpack("C")[0]
lcn=data[i+1,lcn_byte]
i += 1+lcn_byte
i += 16
}
0.upto(32){|i1|i += 16}
0.upto(32){|i1|
ltn_byte=data[i,1].unpack("C")[0]
i += 1+ltn_byte
i += 4
1.upto(10){|i2|i += 8}
}
1.upto(10){|i1|i += 28}
i += 100
data2=data[0,i] #dataのヘッダー情報をdata2にコピーする

n=4 #線の本数
data2<<[n].pack("S")

data2<<[255*256+255,b_n,8].pack("SSS")
data2<<"CDataSen"

pl=0 #曲線属性番号
lt=1 #線種
lc=2 #線色
lw=0 #線幅
ly=0 #レイヤ
lg=0 #レイヤグループ
z=0 #属性
#sx:線の始点X座標 sy:線の始点Y座標 ex:線の終点X座標 ey:線の終点Y座標

sx= -100;sy= -100;ex= 100;ey= -100
data2<<[pl,lt,lc,lw,ly,lg,z,sx,sy,ex,ey].pack("LCSSSSSdddd")

data2<<[128*256+1].pack("S")
sx= 100;sy= -100;ex= 100;ey= 100
data2<<[pl,lt,lc,lw,ly,lg,z,sx,sy,ex,ey].pack("LCSSSSSdddd")

data2<<[128*256+1].pack("S")
sx= 100;sy= 100;ex= -100;ey= 100
data2<<[pl,lt,lc,lw,ly,lg,z,sx,sy,ex,ey].pack("LCSSSSSdddd")

data2<<[128*256+1].pack("S")
sx= -100;sy= 100;ex= -100;ey= -100
data2<<[pl,lt,lc,lw,ly,lg,z,sx,sy,ex,ey].pack("LCSSSSSdddd")

bl_n=0 #ブロック定義数
gz_n=0 #画像同梱数
data2<<[bl_n,gz_n].pack("SL")
open("#{path}/temp.jww","wb"){|f|f.write data2} #temp.jwwの作成

system("c:/jww/jw_win #{path}/temp.jww") #temp.jwwを開く

__END__
:end


引用なし

パスワード


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

JWWデータフォーマットについて BOB 17/7/17(月) 2:10
Re:JWWデータフォーマットについて kojima 17/7/17(月) 22:30
Re:JWWデータフォーマットについて BOB 17/8/3(木) 13:27
Re:JWWデータフォーマットについて BOB 17/8/3(木) 16:01
Rubyでの参考例 kojima 17/7/18(火) 22:50
Re:Rubyでの参考例 いっち 17/8/2(水) 11:27
Re:Rubyでの参考例 BOB 17/8/3(木) 13:42
Re:Rubyでの参考例 kojima 17/8/3(木) 19:17
Re:Rubyでの参考例 BOB 17/8/10(木) 22:25
Re:Rubyでの参考例 kojima 17/8/11(金) 14:13
Re:JWWデータフォーマットについて mirror 17/8/3(木) 21:33
Re:JWWデータフォーマットについて BOB 17/8/10(木) 22:07
Re:JWWデータフォーマットについて mirror 17/8/11(金) 8:02
Re:JWWデータフォーマットについて マチャプチャレ 17/8/11(金) 15:56

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

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