Many workflows require the use of multiple tools from Mimics and 3-matic. With scripting is possible to automate such workflows and use tools from both software packages.
This tutorial shows how to continue the workflow in 3-matic while working in Mimics. The results of 3-matic are returned to Mimics and the script continues in Mimics. You can have the scripts of 3-matic and Mimics in different *.py files or in the same file. For this tutorial a single-file script approach is selected.
The Mimics project Heart.mcs from
C:\MedData\DemoFiles is used. 3-matic is used for some advanced operations that are not available in Mimics, consequently there is no 3-matic project loaded.
import os import subprocess import sys # One script is used for both Mimics and 3-matic. # For that reason we have to check if we are in Mimics or in 3-matic try: import trimatic except: in_3matic = False else: in_3matic = True SHARED_OBJ = "Union" # If True we are in Mimics if not in_3matic: # Open Heart.mcs Mimics project path = r"C:\MedData\DemoFiles\Heart.mcs" mimics.file.open_project(path) # Find the masks of interest masks_names = ["LA", "LV", "Aorta"] masks =  for m in masks_names: mask = mimics.data.masks.find(m) if mask: print("Mask " + m + " is present.") masks.append(mask) # Unite masks if len(masks) == 3: un1 = mimics.segment.boolean_operations(masks, masks, "Unite") union = mimics.segment.boolean_operations(un1, masks, "Unite") union.name = SHARED_OBJ # Create the Part of the Union mask union_part = mimics.segment.calculate_part(union) union_part.name = SHARED_OBJ # Export the Union Part in the location of the script root_path_of_script = os.path.split(os.path.abspath(__file__)) path_of_stl = os.path.join(root_path_of_script, union_part.name + ".stl") mimics.file.export_part(union_part, path_of_stl) with open(os.path.join(os.path.split(__file__), "my_temp.txt"), "w") as f: f.write("File is created!\n") # Prepare to run 3-matic trimatic = mimics.file.get_path_to_3matic() command = trimatic args = ("-run_script", __file__, path_of_stl, f.name) process = subprocess.Popen((command,) + args, shell=False, stdout=subprocess.PIPE) process.wait() with open(f.name, "r")as f: lines = f.readlines() os.remove(f.name) for i in range(2): mimics.file.import_stl(lines[i + 1].strip()) else: print("Please check if a mask is missing! Three masks are required.") # If True we are in 3-matic else: path_of_stl = sys.argv f = sys.argv trimatic.import_part_stl(path_of_stl) part = trimatic.find_parts(SHARED_OBJ) if part: plane = trimatic.create_plane_fit(part) cut_parts = trimatic.cut(part, plane) exp = trimatic.export_stl_ascii(cut_parts, os.path.split(os.path.abspath(__file__))) with open(f, "a") as f: f.write(exp + "\n") f.write(exp) print("To continue please close 3-matic!")