過去ログ

                                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
にしましたが変更されませんでした。
書込み時は

 ───────────────────────────────────────  ■題名 : Re:外部変形で用紙サイズを変更したいのですが  ■名前 : kojima  ■日付 : 21/9/24(金) 15:05  -------------------------------------------------------------------------
   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

 ───────────────────────────────────────  ■題名 : Re:外部変形で用紙サイズを変更したいのですが  ■名前 : 正廣  ■日付 : 21/9/24(金) 16:41  -------------------------------------------------------------------------
   ▼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=$&#39;.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に書き換えようかと思っています。

 ───────────────────────────────────────  ■題名 : jwfでも既に開いている図面の用紙は変更できない。  ■名前 : kojima  ■日付 : 21/9/24(金) 20:38  -------------------------------------------------------------------------
   ▼正廣さん:
>ご指導ありがとうございます。
>私はRubyはわかりませんので
>環境ファイルでA2の用紙設定してそれを
>jw_win.jwfに書き換えようかと思っています。

新規にJWWを起動したときは、用紙サイズはA2ですが。

既に保存済のファイルを開いて、jw_win.jwfを読み込んでも用紙サイズは変更されません。

 ───────────────────────────────────────  ■題名 : Re:jwfでも既に開いている図面の用紙は変更できない。  ■名前 : 正廣  ■日付 : 21/9/27(月) 10:28  -------------------------------------------------------------------------
   ▼kojimaさん:
>▼正廣さん:
>>ご指導ありがとうございます。
>>私はRubyはわかりませんので
>>環境ファイルでA2の用紙設定してそれを
>>jw_win.jwfに書き換えようかと思っています。
>
>新規にJWWを起動したときは、用紙サイズはA2ですが。
>
>既に保存済のファイルを開いて、jw_win.jwfを読み込んでも用紙サイズは変更されません。

kojimaさん 
返信ありがとうございます。

私は図面サイズをA3でエクセルで数値を入力して自動でJW_cadで作図を作成させています。
数値によって図面枠からはみ出たり、するので外部変形で常時A3の図面を使用しているのを
数値によってA2の図面枠に変更したいのです。

とりあえずA3図面の時はエクセルの数値入力で印刷用に図面枠を作成しようかと思っています。

 ───────────────────────────────────────  ■題名 : Re:jwfでも既に開いている図面の用紙は変更できない。  ■名前 : kojima  ■日付 : 21/9/27(月) 21:59  -------------------------------------------------------------------------
   >私は図面サイズをA3でエクセルで数値を入力して自動でJW_cadで作図を作成させています。
>数値によって図面枠からはみ出たり、するので外部変形で常時A3の図面を使用しているのを
>数値によってA2の図面枠に変更したいのです。
>とりあえずA3図面の時はエクセルの数値入力で印刷用に図面枠を作成しようかと思っています。

違うレイヤにA3とA2の用紙枠を作図して、A2の時は、A3の用紙枠を非表示でいいのでは?

 ───────────────────────────────────────  ■題名 : Re:jwfでも既に開いている図面の用紙は変更できない。  ■名前 : 正廣  ■日付 : 21/9/28(火) 8:03  -------------------------------------------------------------------------
   ▼kojimaさん:
>>私は図面サイズをA3でエクセルで数値を入力して自動でJW_cadで作図を作成させています。
>>数値によって図面枠からはみ出たり、するので外部変形で常時A3の図面を使用しているのを
>>数値によってA2の図面枠に変更したいのです。
>>とりあえずA3図面の時はエクセルの数値入力で印刷用に図面枠を作成しようかと思っています。
>
>違うレイヤにA3とA2の用紙枠を作図して、A2の時は、A3の用紙枠を非表示でいいのでは?

kojimaさんへ
ありがとうございます。kojimaさんのご指導のようにします。

 ───────────────────────────────────────  ■題名 : マクロで用紙サイズ変更  ■名前 : kojima  ■日付 : 21/10/6(水) 20:15  -------------------------------------------------------------------------
   マクロでできました。
短いコードですみます。
以下は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

 ───────────────────────────────────────  ■題名 : Re:マクロで用紙サイズ変更  ■名前 : kojima  ■日付 : 21/10/6(水) 23:09  -------------------------------------------------------------------------
   ▼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になります。

 ───────────────────────────────────────  ■題名 : Re:外部変形で用紙サイズを変更したいのですが  ■名前 : 荻窪姉妹  ■日付 : 21/10/6(水) 15:45  -------------------------------------------------------------------------
   外部変形ではありませんが「Jmacro」というので簡単にできます
検索してみてください(規制されていてURLを書けません(汗))

でコマンドは
JMacro.exe 半角スラッシュC32822
になります。
事情により「半角スラッシュ」は変換してくださいw

どうしても外部変形でということであれば
空のバッチファイルに上記コマンドを書けば外部変形として動きます

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 1530