fix cutstudio eps export
This commit is contained in:
parent
c40d43864b
commit
06f96fe1e5
@ -22,61 +22,20 @@ along with this program; if not, write to the Free Software
|
|||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
'''
|
'''
|
||||||
|
|
||||||
from __future__ import division
|
|
||||||
from __future__ import print_function
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
from __future__ import absolute_import
|
|
||||||
|
|
||||||
from builtins import open
|
|
||||||
from builtins import map
|
|
||||||
from builtins import str
|
|
||||||
from builtins import range
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
from subprocess import Popen
|
|
||||||
import subprocess
|
|
||||||
import shutil
|
import shutil
|
||||||
import numpy
|
import numpy
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
import inkex
|
import inkex
|
||||||
import filecmp
|
import inkex.command
|
||||||
from pathlib import Path
|
from inkex.command import inkscape
|
||||||
from functools import lru_cache
|
|
||||||
import atexit
|
|
||||||
DEVNULL = open(os.devnull, 'w')
|
|
||||||
atexit.register(DEVNULL.close)
|
|
||||||
|
|
||||||
def message(s):
|
def message(s):
|
||||||
sys.stderr.write(s+"\n")
|
sys.stderr.write(s+"\n")
|
||||||
def debug(s):
|
def debug(s):
|
||||||
message(s)
|
message(s)
|
||||||
|
|
||||||
# copied from https://github.com/t-oster/roland_eps/blob/0abe785a30d5d5085dd3b5953b38239b1ff83358/tools/inkscape_extension/roland_eps_export.py
|
|
||||||
def which(program, raiseError, extraPaths=[], subdir=None):
|
|
||||||
"""
|
|
||||||
find program in the $PATH environment variable and in $extraPaths.
|
|
||||||
If $subdir is given, also look in the given subdirectory of each $PATH entry.
|
|
||||||
"""
|
|
||||||
pathlist=os.environ["PATH"].split(os.pathsep)
|
|
||||||
if "nt" in os.name:
|
|
||||||
pathlist.append(os.environ.get("ProgramFiles","C:\Program Files\\"))
|
|
||||||
pathlist.append(os.environ.get("ProgramFiles(x86)","C:\Program Files (x86)\\"))
|
|
||||||
pathlist.append("C:\Program Files\\") # needed for 64bit inkscape on 64bit Win7 machines
|
|
||||||
pathlist.append(os.path.dirname(os.path.dirname(os.getcwd()))) # portable application in the current directory
|
|
||||||
pathlist += extraPaths
|
|
||||||
if subdir:
|
|
||||||
pathlist = [os.path.join(p, subdir) for p in pathlist] + pathlist
|
|
||||||
def is_exe(fpath):
|
|
||||||
return os.path.isfile(fpath) and (os.access(fpath, os.X_OK) or fpath.endswith(".exe"))
|
|
||||||
for path in pathlist:
|
|
||||||
exe_file = os.path.join(path, program)
|
|
||||||
if is_exe(exe_file):
|
|
||||||
return exe_file
|
|
||||||
if raiseError:
|
|
||||||
raise Exception("Cannot find " + str(program) + " in any of these paths: " + str(pathlist) + ". Either the program is not installed, PATH is not set correctly, or this is a bug.")
|
|
||||||
else:
|
|
||||||
return None
|
|
||||||
|
|
||||||
# header
|
# header
|
||||||
# for debugging purposes you can open the resulting EPS file in Inkscape,
|
# for debugging purposes you can open the resulting EPS file in Inkscape,
|
||||||
# select all, ungroup multiple times
|
# select all, ungroup multiple times
|
||||||
@ -226,15 +185,22 @@ class RolandCutStudioEPSExport(inkex.OutputExtension):
|
|||||||
#debug("OUTPUT: "+output)
|
#debug("OUTPUT: "+output)
|
||||||
return output + "\n"
|
return output + "\n"
|
||||||
|
|
||||||
if os.name=="nt": # windows
|
|
||||||
INKSCAPEBIN = which("inkscape.exe", True, subdir="Inkscape")
|
|
||||||
else:
|
|
||||||
INKSCAPEBIN=which("inkscape", True)
|
|
||||||
filename = self.options.input_file
|
filename = self.options.input_file
|
||||||
shutil.copyfile(filename, filename+".filtered.svg")
|
shutil.copyfile(filename, filename + ".filtered.svg")
|
||||||
cmd = [INKSCAPEBIN, "-T", "--export-ignore-filters", "--export-area-drawing", "--export-filename="+filename+".inkscape.eps", filename+".filtered.svg"]
|
|
||||||
|
actions_list=[]
|
||||||
|
actions_list.append("export-text-to-path")
|
||||||
|
actions_list.append("export-ignore-filters")
|
||||||
|
actions_list.append("export-area-drawing")
|
||||||
|
actions_list.append("export-filename:{}".format(filename + ".inkscape.eps"))
|
||||||
|
actions_list.append("export-do")
|
||||||
|
actions = ";".join(actions_list)
|
||||||
|
cli_output = inkscape(filename + ".filtered.svg", actions=actions) #process recent file
|
||||||
|
if len(cli_output) > 0:
|
||||||
|
self.msg("Inkscape returned the following output when trying to run the file export; the file export may still have worked:")
|
||||||
|
self.msg(cli_output)
|
||||||
|
|
||||||
inkscape_eps_file = filename + ".inkscape.eps"
|
inkscape_eps_file = filename + ".inkscape.eps"
|
||||||
assert 0 == subprocess.call(cmd, stderr=DEVNULL), 'EPS conversion failed: command returned error: ' + '"' + '" "'.join(cmd) + '"'
|
|
||||||
assert os.path.exists(inkscape_eps_file), 'EPS conversion failed: command did not create result file: ' + '"' + '" "'.join(cmd) + '"'
|
assert os.path.exists(inkscape_eps_file), 'EPS conversion failed: command did not create result file: ' + '"' + '" "'.join(cmd) + '"'
|
||||||
stack=[]
|
stack=[]
|
||||||
scalingStack=[numpy.identity(3)]
|
scalingStack=[numpy.identity(3)]
|
||||||
|
Reference in New Issue
Block a user