본문 바로가기
  • You find inspiration to create your own path !
업무 자동화/python & CAD

Creo & Python] Get the parameter name of the model

by ToolBOX01 2025. 9. 5.
반응형

▣ Get the parameter name of the currently active model

  • Instead of c.parameter_list(), use creopyson.parameter.list_(c, file_="model name") for stable operation.
  • file_get_active() → Check the currently active model.
  • file_list() → Check all open models.
  • parameter.list_() → Retrieve the model's parameter names/values.

Python code : 

import creopyson
from creopyson import parameter as cr_param  # Module function direct usage

def _clean_dirname(d):
    if not d:
        return d
    # Correct duplicate drive notation like 'C:C:/' 
    return d.replace("C:C:/", "C:/").replace("C:C:\\", "C:\\").replace("C::", "C:")

c = None
try:
    c = creopyson.Client()
    c.connect()

    if not c.is_creo_running():
        print("Creo is not running.")
    else:
        # Check active model
        active = c.file_get_active()
        if not active:
            print("No active model found.")
        else:
            file_name = active.get("file")
            dirname = _clean_dirname(active.get("dirname", ""))

            print(f"Active model: {{'file': '{file_name}', 'dirname': '{dirname}'}}")

            # ✅ Retrieve parameter list (using module function)
            params = cr_param.list_(c, file_=file_name)

            if params:
                print("List of Parameter names:")
                for p in params:
                    name = p.get("name", "(Unnamed)")
                    print(f"- {name}")
            else:
                # Additional existence check (some environments return empty lists despite existing parameters)
                exists_any = cr_param.exists(c, file_=file_name)
                if exists_any:
                    print("⚠️ Parameters exist but list retrieval is empty. Please check your Creoson/Creo version.")
                else:
                    print("No parameters in the model.")
except Exception as e:
    print(f"An error occurred: {e}")
finally:
    if c:
        c.disconnect()
        print("Disconnected from Creo.")

(I'm still learning Python, so the code isn't optimized.)

Execution results: 

 

by korealionkk@gmail.com


반응형