レイヤ名変更

作成理由

  • jwfファイルを読み込む場合、レイヤグループ名18バイト以下、レイヤ名16バイト以下の制限がかかります。
  • 外部変形ではこれを超えるバイト数でも扱えるため読み込めなかったレイヤ名を補完できます。

外部変形

  • rubyをインストールして利用して下さい。
  • cmd(コマンドプロンプト)を立ち上げて次のコマンドを実行してwin32-clipboardをインストールして下さい。
    • gem install win32-clipboard
@rem レイヤ名変更
@echo off
REM #jww
REM #cd
REM #hc【レイヤ名変更】 ボタンを選択して下さい。
REM #hm【レイヤ名変更】 |jw01.jwf[L]|jw02.jwf[R]|
REM #:1
REM #h0
REM #e
REM #:2
REM #h0
REM #e

:1
:2
copy jwc_temp.txt jwc_temp.bak
ruby -x %~f0 %1
goto END

:COMENT
設定ファイルを読み込んでレイヤグループ名、レイヤ名を変更します
~
#! ruby -Ks

$stderr=open("error.txt","w")
$stdout=open("jwc_temp.txt","w")

jwf="jw0#{ARGV[0]}.jwf"
open("jwc_temp.bak").readlines.each{|e|
  if /^hq/=~e
    puts "h# #{jwf}を読み込みました"
  else
    puts e.chomp
  end}
a=[]
open(jwf).read.each_line{|e|
  if /^LAYNAM_[0-9A-F]/=~e
    a << e.chomp.gsub(%r|^[^=]*=|,"").gsub(","," ,")
      .gsub(%r|,$|,", ").split(",").map{|e| e.gsub(%r| $|,"")}
  end}
a.each_with_index{|e,i| e.each_with_index{|f,j|
    if j==0
      puts "lg"+i.to_s(16)+" 11"
      puts "lgn"+f
    else
      puts "ly"+(j-1).to_s(16)+" 11"
      puts "lyn"+f
      puts "ly0 11" if j==16
    end}}

__END__
:END


@rem 設定ファイル操作
@echo off
REM #jww
REM #cd
REM #hc【設定ファイル操作】 ボタンを選択して下さい。
REM #hm【設定ファイル操作】 |jwl書出し[L]|jwl読込み[R]|jw01.jwl書出し|jw.01jwl|jwf読込み|
REM #:1
REM #:2
REM #:3
REM #:4
REM #:5
REM #hf
REM #e

:1
:2
:3
:4
:5
copy jw01.jwl jw99.jwl
copy jwc_temp.txt jwc_temp.bak
start ruby -Ks -x %~f0 %1
goto END

:COMENT
設定ファイルの読込み、書出しをします。
【  jwl書出し   】:jwlファイルを書出します
【  jwl読込み   】:jwlファイルを読込みます。
【jw01.jwl書出し】:jw01.jwlを書出します
【jw01.jwl読込み】:jw01.jwlを読込みます。
【  jwf読込み   】:jwfファイルを読込みます
~
#! ruby -Ks

$stderr=open("error.txt","w")
$stdout=open("jwc_temp.txt","w")

require 'win32ole'
require "win32/clipboard"

opt=ARGV[0].to_i
file=open("jwc_temp.bak").readlines.
  grep(%r|^file=.*|)[0].gsub(%r|^file=|,"").chomp
dir=File.dirname(file)
jwl=dir+"\\jw01.jwl"
shell = WIN32OLE.new("WScript.Shell")
shell.AppActivate("jw_win");sleep(0.2)
if opt==1
  shell.Sendkeys("%sfw");sleep(0.2)
  shell.Sendkeys("%tj%n");sleep(0.2)
elsif opt==2
  shell.Sendkeys("%sfr");sleep(0.2)
  shell.Sendkeys("%tj%n");sleep(0.2)
elsif opt==3
  Win32::Clipboard.set_data(jwl)
  shell.Sendkeys("%sfw");sleep(0.2)
  shell.Sendkeys("^v{ENTER}{RIGHT}")
elsif opt==4
  j=open("jw01.jwl","w")
  open("jw99.jwl").readlines.each{|e|
    e="PRTCT_CH =  1 " if /PRTCT_CH/=~e
    j.puts e.chomp}
  Win32::Clipboard.set_data(jwl)
  shell.Sendkeys("%sfr");sleep(0.2)
  shell.Sendkeys("^v{ENTER}{RIGHT}")
elsif opt==5
  #Win32::Clipboard.set_data(jwf)
  shell.Sendkeys("%sfr");sleep(0.2)
end

__END__
:END

注意点

  • ruby 2.6.5p114 にて動作確認してます。
  • jwfのファイル名は固定ですが選べます。
  • jw01.jwfとjw02.jwfをバッチファイルと同じフォルダに入れて下さい。
  • レイヤは全て編集可能で表示されます。
  • プロテクトレイヤや非表示の情報は継承されません。
  • グループレイヤを移動した場合0レイヤが書き込み状態になります。
  • プロテクトレイヤ等の状態を保持したい場合は事前にjwlファイルを書き出して外部変形実行後に読み込み直して下さい。

コメント