[PYTHON] Générer des tailles personnalisées pour ArtRage4

Dans l'état initial, ArtRage n'a pas de tailles telles que A4 et B5 lors de la création d'un nouveau. Cependant, comme il est possible de l'ajouter en tant que taille personnalisée, ce n'est pas un gros problème en soi, mais c'était un peu gênant de l'ajouter un par un, j'ai donc écrit un script pour le générer automatiquement en tant que test. (L'opération a été confirmée avec ArtRage4 (4.0.4).)

L'utilisation est comme ça.

$ python artrage_papersize.py A4 A5 B5 --dpi 300

Dans l'exemple ci-dessus

Sera généré dans le dossier actuel.

Enregistrez les fichiers générés dans les tailles personnalisées d'ArtRage si nécessaire.

artrage_paparsize.py


#!/usr/bin/env  python
# -*- coding: utf-8 -*-
#
# ------------------------------------------------------------------ import(s)
import  sys
import  struct
import  argparse



# ------------------------------------------------------------------- param(s)
ARTRAGE_HEAD  = u"ARSizePresetFileVersion-1\r\n"
PAPER_SIZE    = {
  "A" : { "X" :  841, "Y" : 1189 },
  "B" : { "X" : 1030, "Y" : 1456 },
}
MM_INCH       = 0.03937



# ---------------------------------------------------------------- function(s)

# ============================================================================
##
#
def calc_size( fX, fY ):

  return( fY / 2, fX )



# ============================================================================
##
#
def export_file( strFilename, fX, fY, nDPI ):

  with open( strFilename, "wb" ) as hFile:
    hFile.write( ARTRAGE_HEAD.encode( "utf-16-le" ) )
    hFile.write( struct.pack( "BBBBIIf", 0x01, 0x34, 0x00, 0xFF, 4, 0,   fX ) )
    hFile.write( struct.pack( "BBBBIIf", 0x02, 0x34, 0x00, 0xFF, 4, 0,   fY ) )
    hFile.write( struct.pack( "BBBBIIf", 0x01, 0x31, 0x00, 0xFF, 4, 0, nDPI ) )
    hFile.write( struct.pack( "BBBBIII", 0x00, 0x34, 0x00, 0xFF, 4, 0,    0 ) )
    hFile.close()



# ============================================================================
##
#
def main():

  oCParser  = argparse.ArgumentParser( description = "ArtRage Paper Generator" )
  oCParser.add_argument(
    "paper",
    help  = "Set paper (ex: A4, B5)",
    nargs = "+"
  )
  oCParser.add_argument(
    "-d", "--dpi",
    help    = "Set dpi",
    default = 300
  )

  oCParams  = oCParser.parse_args( sys.argv[ 1: ] )


  for strPaper in oCParams.paper:

    if( len( strPaper ) != 2 ):
      continue
    if( strPaper[ 0 ].upper() not in ( "A", "B" ) ):
      continue

    try:
      strP  = strPaper[ 0 ].upper()
      nSize = int( strPaper[ 1 ] )
      nDPI  = oCParams.dpi
    except:
      continue


    fX  = PAPER_SIZE[ strP ][ "X" ] * nDPI * MM_INCH
    fY  = PAPER_SIZE[ strP ][ "Y" ] * nDPI * MM_INCH

    for nSplitCount in range( nSize ):
      fX, fY  = calc_size( fX, fY )

    strFilenameP = "%s%d Port.spr"  % ( strP, nSize, )
    strFilenameL = "%s%d Land.spr" % ( strP, nSize, )
    export_file( strFilenameP, fX, fY, nDPI )
    export_file( strFilenameL, fY, fX, nDPI )



if( __name__ == "__main__" ):
  main()



# ---------------------------------------------------------------------- [EOF]

Recommended Posts

Générer des tailles personnalisées pour ArtRage4
Générer automatiquement EDT pour le message ECHONET