Page 1530 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼外部変形で用紙サイズを変更したいのですが 正廣 21/9/24(金) 10:15 ┣Re:外部変形で用紙サイズを変更したいのですが kojima 21/9/24(金) 15:05 ┃ ┗Re:外部変形で用紙サイズを変更したいのですが 正廣 21/9/24(金) 16:41 ┃ ┗jwfでも既に開いている図面の用紙は変更できない。 kojima 21/9/24(金) 20:38 ┃ ┗Re:jwfでも既に開いている図面の用紙は変更できない。 正廣 21/9/27(月) 10:28 ┃ ┗Re:jwfでも既に開いている図面の用紙は変更できない。 kojima 21/9/27(月) 21:59 ┃ ┗Re:jwfでも既に開いている図面の用紙は変更できない。 正廣 21/9/28(火) 8:03 ┃ ┗マクロで用紙サイズ変更 kojima 21/10/6(水) 20:15 ┃ ┗Re:マクロで用紙サイズ変更 kojima 21/10/6(水) 23:09 ┗Re:外部変形で用紙サイズを変更したいのですが 荻窪姉妹 21/10/6(水) 15:45 ─────────────────────────────────────── ■題名 : 外部変形で用紙サイズを変更したいのですが ■名前 : 正廣 ■日付 : 21/9/24(金) 10:15 -------------------------------------------------------------------------
外部変形で用紙サイズをA3からA2に変更したいのですができません。 仕方を教えてください。 BATファイルは REM メモ帳を起動してJWC_TEMPを開く REM #jww REM #cd REM #zs REM #e start/w notepad JWC_TEMP.txt です。 外部変形をクリックしたときの 書き出しテキストは hq hk 0 hs 100 100 100 100 100 100 100 100 100 100 100 500 100 30 30 1 hzs 420 297 hcw 2 2.5 3 4 5 6 7 8 1 1 hch 2 2.5 3 4 5 6 7 8 1 1 hcd 0 0 0 0.5 0.5 0.5 1 1 0 0 hcc 1 2 4 4 4 4 4 4 6 6 hn 0 0 0 0 lgd lyd lc2 lt1 cn0 2 2 0 2 cn"$<MS ゴシック> # です。 書込み時は hk 0 hs 100 100 100 100 100 100 100 100 100 100 100 500 100 30 30 1 hzs 420 297 hcw 2 2.5 3 4 5 6 7 8 1 1 hch 2 2.5 3 4 5 6 7 8 1 1 hcd 0 0 0 0.5 0.5 0.5 1 1 0 0 hcc 1 2 4 4 4 4 4 4 6 6 hn 0 0 0 0 lgd lyd lc2 lt1 cn0 2 2 0 2 cn"$<MS ゴシック> # hzs 594 420 にしましたが変更されませんでした。 書込み時は |
hzs は、書き出し専用のデータです。 読み込んでも何の変化もありません。 外部変形で用紙サイズを変更をすることは出来ません。 用紙サイズは、ステータスバーの用紙サイズをクリックして簡単に変更 できますので、時間をかけて、外部変形でというのは実用的ではないでしょう。 プログラミングの興味としてなら JWWのデータ形式を理解していれば、保存されているデータに 直接アクセスして用紙サイズを変更できます。 (バイナリデータを書き換える専用アプリケーション) 以下は、それを外部変形から利用できるようにしたものです。 図面そのものは書き換えていません。 temp.jwwにデータをコピーして用紙サイズの変更をします。 @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 goto end #!ruby -Ks while ARGF.gets if $_=~/^file\=/ file=$'.chomp end end if file=="" STDERR.puts "保存されていません。 保存してから再実行してください" STDERR.puts "続行するには何かキーを押してください" STDIN.gets exit end STDERR.puts "事前に上書き保存しましたか? YES:1 NO:2" hozon=STDIN.gets.to_i unless hozon==1 STDERR.puts "上書き保存してから再実行してください" STDERR.puts "続行するには何かキーを押してください" STDIN.gets exit end STDERR.puts "どの用紙サイズに変更しますか? 数値を入力してください" STDERR.puts "0:A0 1:A1 2:A2 3:A3 4:A4 8:2A 9:3A 10:4A 11:5A 12:10m 13:50m 14:100m" paper_size=STDIN.gets.to_i dir,fi=File.split(file) begin i=0 data="" open(file,"rb"){|f|data=f.read} #◎jwwデータの宣言 i += 8 #◎図面のバージョン b_n=data[i,4].unpack("L")[0]; if b_n<420 STDERR.puts "バージョンNO#{b_n}には未対応です。処理を中止します" exit end i += 4 #◎メモ欄の記載文 memo_byte=data[i,1].unpack("C")[0]; i += 1+memo_byte #◎図面サイズ #0:A0 1:A1 2:A2 3:A3 4:A4 8:2A 9:3A 10:4A 11:5A 12:10m 13:50m 14:100m data[i,4]=[paper_size].pack("L") open("#{dir}/temp.jww","wb"){|f|f.write(data)} system("start c:/jww/jw_win #{dir}/temp.jww") rescue STDERR.puts $! end __END__ :end |
▼kojimaさん: >hzs は、書き出し専用のデータです。 >読み込んでも何の変化もありません。 > >外部変形で用紙サイズを変更をすることは出来ません。 > >用紙サイズは、ステータスバーの用紙サイズをクリックして簡単に変更 >できますので、時間をかけて、外部変形でというのは実用的ではないでしょう。 > > >プログラミングの興味としてなら >JWWのデータ形式を理解していれば、保存されているデータに >直接アクセスして用紙サイズを変更できます。 >(バイナリデータを書き換える専用アプリケーション) > >以下は、それを外部変形から利用できるようにしたものです。 >図面そのものは書き換えていません。 >temp.jwwにデータをコピーして用紙サイズの変更をします。 > > >@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 > >goto end >#!ruby -Ks >while ARGF.gets >if $_=~/^file\=/ >file=$'.chomp >end >end >if file=="" >STDERR.puts "保存されていません。 保存してから再実行してください" >STDERR.puts "続行するには何かキーを押してください" >STDIN.gets >exit >end >STDERR.puts "事前に上書き保存しましたか? YES:1 NO:2" >hozon=STDIN.gets.to_i >unless hozon==1 >STDERR.puts "上書き保存してから再実行してください" >STDERR.puts "続行するには何かキーを押してください" >STDIN.gets >exit >end >STDERR.puts "どの用紙サイズに変更しますか? 数値を入力してください" >STDERR.puts "0:A0 1:A1 2:A2 3:A3 4:A4 8:2A 9:3A 10:4A 11:5A 12:10m 13:50m 14:100m" >paper_size=STDIN.gets.to_i >dir,fi=File.split(file) >begin >i=0 >data="" >open(file,"rb"){|f|data=f.read} >#◎jwwデータの宣言 >i += 8 >#◎図面のバージョン >b_n=data[i,4].unpack("L")[0]; >if b_n<420 >STDERR.puts "バージョンNO#{b_n}には未対応です。処理を中止します" >exit >end >i += 4 > >#◎メモ欄の記載文 >memo_byte=data[i,1].unpack("C")[0]; >i += 1+memo_byte >#◎図面サイズ >#0:A0 1:A1 2:A2 3:A3 4:A4 8:2A 9:3A 10:4A 11:5A 12:10m 13:50m 14:100m >data[i,4]=[paper_size].pack("L") > >open("#{dir}/temp.jww","wb"){|f|f.write(data)} > >system("start c:/jww/jw_win #{dir}/temp.jww") >rescue >STDERR.puts $! >end >__END__ >:end ご指導ありがとうございます。 私はRubyはわかりませんので 環境ファイルでA2の用紙設定してそれを jw_win.jwfに書き換えようかと思っています。 |
▼正廣さん: >ご指導ありがとうございます。 >私はRubyはわかりませんので >環境ファイルでA2の用紙設定してそれを >jw_win.jwfに書き換えようかと思っています。 新規にJWWを起動したときは、用紙サイズはA2ですが。 既に保存済のファイルを開いて、jw_win.jwfを読み込んでも用紙サイズは変更されません。 |
▼kojimaさん: >▼正廣さん: >>ご指導ありがとうございます。 >>私はRubyはわかりませんので >>環境ファイルでA2の用紙設定してそれを >>jw_win.jwfに書き換えようかと思っています。 > >新規にJWWを起動したときは、用紙サイズはA2ですが。 > >既に保存済のファイルを開いて、jw_win.jwfを読み込んでも用紙サイズは変更されません。 kojimaさん 返信ありがとうございます。 私は図面サイズをA3でエクセルで数値を入力して自動でJW_cadで作図を作成させています。 数値によって図面枠からはみ出たり、するので外部変形で常時A3の図面を使用しているのを 数値によってA2の図面枠に変更したいのです。 とりあえずA3図面の時はエクセルの数値入力で印刷用に図面枠を作成しようかと思っています。 |
>私は図面サイズをA3でエクセルで数値を入力して自動でJW_cadで作図を作成させています。 >数値によって図面枠からはみ出たり、するので外部変形で常時A3の図面を使用しているのを >数値によってA2の図面枠に変更したいのです。 >とりあえずA3図面の時はエクセルの数値入力で印刷用に図面枠を作成しようかと思っています。 違うレイヤにA3とA2の用紙枠を作図して、A2の時は、A3の用紙枠を非表示でいいのでは? |
▼kojimaさん: >>私は図面サイズをA3でエクセルで数値を入力して自動でJW_cadで作図を作成させています。 >>数値によって図面枠からはみ出たり、するので外部変形で常時A3の図面を使用しているのを >>数値によってA2の図面枠に変更したいのです。 >>とりあえずA3図面の時はエクセルの数値入力で印刷用に図面枠を作成しようかと思っています。 > >違うレイヤにA3とA2の用紙枠を作図して、A2の時は、A3の用紙枠を非表示でいいのでは? kojimaさんへ ありがとうございます。kojimaさんのご指導のようにします。 |
マクロでできました。 短いコードですみます。 以下はrubyで書いていますが、マクロはVBscript や Jscript VBA のほうが書きやすいと思います。 外部変形コマンドから実行できるようにしています。 @REM 用紙サイズの変更 @echo off REM #jww REM #cd REM #e start ruby -x %~f0 #!ruby -Ks STDERR.puts "pape_size 0:A0 1:A1 2:A2 3:A3 4:A4 A:2A B:3A C:4A D:5A E:10m F:50m G:100m" size=STDIN.gets.chomp require 'win32ole' shell=WIN32OLE.new("WScript.Shell") shell.AppActivate("jw_win") sleep(1) shell.Sendkeys("%sy#{size}") __END__ :end EXCEL VBAのマクロだと以下のようになるようです? (用紙サイズをA2にする) Sub paper_size_change() AppActivate "Jw_win.exe" SendKeys "%sy2" End Sub |
▼kojimaさん: >EXCEL VBAのマクロだと以下のようになるようです? >(用紙サイズをA2にする) > >Sub paper_size_change() >AppActivate "Jw_win.exe" >SendKeys "%sy2" >End Sub Sub paper_size_change() AppActivate "Jw_win" SendKeys "%sy2" End Sub でした。 EXCELからこのマクロを実行すると起動中のJWWの図面サイズがA2になります。 |
外部変形ではありませんが「Jmacro」というので簡単にできます 検索してみてください(規制されていてURLを書けません(汗)) でコマンドは JMacro.exe 半角スラッシュC32822 になります。 事情により「半角スラッシュ」は変換してくださいw どうしても外部変形でということであれば 空のバッチファイルに上記コマンドを書けば外部変形として動きます |