Как перевести командную строку в код python - PullRequest
1 голос
/ 18 июня 2020

Сейчас я работаю с python, и у меня серьезные проблемы с синтаксисом. Я хотел включить командную строку Cura в свой сценарий, но я не знаю, как на самом деле проанализировать строку, чтобы команда выполнялась из моего сценария Blender. Мой код следующий, и я действительно не знаю, действительно ли он действителен:

def main(context):
    blend_file_path = bpy.data.filepath
    directory = os.path.dirname(blend_file_path)
    target_file = os.path.join(directory,bpy.path.basename(bpy.context.blend_data.filepath) +'.stl')
    bpy.ops.export_mesh.stl(filepath=target_file)   

cevar = 'CuraEngine slice -j "C:\\Programme\\Ultimaker Cura 4.5\\resources\\definitions\\fdmprinter.def.json"' +' -l ' + directory + bpy.path.basename(bpy.context.blend_data.filepath) +'.stl +o '+ directory + bpy.path.basename(bpy.context.blend_data.filepath) +'.gcode'
os.system(cevar)

1 Ответ

2 голосов
/ 18 июня 2020

Используйте этот код

import subprocess

cmd_args = [
    "CuraEngine",
    "slice",
    "-j",
    "C:\\Programme\\Ultimaker Cura 4.5\\resources\\definitions\\fdmprinter.def.json",
    "-l",
    f"{os.path.join(directory,bpy.path.basename(bpy.context.blend_data.filepath))}.stl",
    "+o",
    f"{os.path.join(directory, bpy.path.basename(bpy.context.blend_data.filepath))}.gcode",
]

output = subprocess.Popen(cmd_args, stdout=subprocess.PIPE).communicate()[0]
...