PyMechanical: Hướng dẫn sử dụng sơ bộ

  • 2023-08-30 ---

  • Scripting đóng một vai trò quan trọng trong việc tương tác với các sản phẩm phần mềm, cho phép tự động hóa các tác vụ thông thường. Ansys Mechanical đưa ra một khả năng scripting mạnh mẽ được gọi là "Mechanical Scripting" để giải quyết các yêu cầu tự động hóa. 

    Là một phần cam kết của Ansys trong việc mở rộng khả năng hỗ trợ nhu cầu người dùng đối với các quy trình làm việc phức tạp. Chúng tôi đã thêm PyMechanical vào bộ công cụ PyAnsys của mình nhằm kiểm soát tốt hơn các quy trình này.

    Trong bài viết này, chúng ta sẽ khám phá mối quan hệ giữa Mechanical Scripting và PyMechanical. Phần lớn người dùng đang tìm cách hợp lý hóa các mô phỏng, kiểm soát các biến đầu vào, thực hiện các nghiên cứu xác minh tính khả thi hay tích hợp Ansys Mechanical với các mô-đun Python khác, PyMechanical cung cấp sự linh hoạt và hiệu quả mà bạn cần.

    Với PyMechanical, bạn có thể hoàn thành các tác vụ như sau:

    • Đẩy nhanh quá trình chuẩn bị mô phỏng của bạn.
    • Kết hợp khả năng biểu đạt của lập trình code Python vào mục đích kiểm soát các đầu vào của bạn bằng các phương pháp điều khiển bộ giải.
    • Khám phá các nghiên cứu xác minh tính khả thi hoặc nắm bắt kiến thức bằng cách sử dụng Jupyter notebooks.
    • Khai thác bộ giải như công cụ vật lý trong ứng dụng AI tiếp theo của bạn.

    Tự động hóa qua Mechanical Scripting

    Khi sử dụng Ansys Mechanical, các yêu cầu tự động hóa có thể được giải quyết bằng Mechanical Scripting. Ví dụ: một trình biên dịch đếm số lượng vật thể trong hình học có thể được viết là:

    Allbodies = ExtAPI.DataModel.Project.Model.GetChildren(DataModelObjectCategory.Body, True)

    print(allbodies.Count)

    Automation via Mechanical Scripting

    Để biết thêm thông tin về khả năng của Mechanical Scripting, vui lòng tham khảo Scripting in Mechanical Guide.

    Tự động hóa qua PyMechanical

    Nếu bạn đã sử dụng Python để tự động hóa và điều phối quy trình công việc của mình, bây giờ bạn có thể tận dụng PyMechanical làm giao diện cho Mechanical Scripting Interface. Điều quan trọng cần lưu ý là PyMechanical sử dụng Standalone Mechanical, một tính năng beta cho phép bạn mở một phiên bản độc lập của Ansys Mechanical. Phiên bản độc lập này hoạt động độc lập với Ansys trong khi cung cấp các tính năng tương tự. Sự khác biệt là rất nhỏ, và nếu bạn thành thạo trong việc sử dụng Mechanical, bạn sẽ có thể sử dụng phiên bản độc lập một cách dễ dàng. Khởi động Standalone Mechanical được thực hiện bằng lệnh sau:

    "C:/Program Files/ANSYS Inc/v232/aisol/bin/winx64/AnsysWBU.exe" -DSApplet –AppModeMech

    PyMechanical Interfaces

    PyMechanical cung cấp hai chế độ riêng biệt để tương tác với bộ giải Mechanical:

    • Remote session: sử dụng PyMechanical như một máy chủ ảo điều khiển phiên bản Mechanical từ xa.
    • Embedded instance: sử dụng PyMechanical để nhúng một đối tượng của Mechanical trực tiếp vào Python dưới dạng đối tượng Python.

    Chúng tôi sẽ cung cấp một cái nhìn tổng quan sơ bộ về cách khởi tạo ở cả hai chế độ này. Nếu bạn không biết đến hoặc không có môi trường Python để sử dụng, vui lòng tham khảo bài viết Ansys Python Manager có thể giúp bạn bắt đầu. Ansys Python Manager đơn giản hóa quá trình triển khai môi trường ảo cùng với tất cả các mô-đun Ansys cần thiết cho PyMechanical.

    Remote Mechanical Sessions

    Trong chế độ này, Mechanical chạy như một máy chủ, sẵn sàng phản hồi bất kỳ máy chủ ảo nào và PyMechanical hoạt động như một máy chủ ảo thực hiện các lệnh gọi API chạy nền. Để bắt đầu một phiên Mechanical từ xa trên máy tính cục bộ của bạn từ Python, chỉ cần sử dụng launch_mechanical(). Điều này tạo ra một phiên bản của lớp Mechanical trong nền và gửi lệnh đến đó. Phương thức trả về một đối tượng thể hiện cho kết nối với tác vụ. Điều này hoạt động với chế độ tương tác trong Python và cho phép bạn phát triển các trình biên dịch trong thời gian thực, trước khi bạn chạy công việc của mình dưới dạng chương trình (hoặc ở chế độ hàng loạt).

    import ansys.mechanical.core as pymechanical
    mechanical = pymechanical.launch_mechanical(batch=False)
    print(mechanical)

    Khi Mechanical hoạt động, bạn có thể gửi lệnh đến nó thông qua đối tượng kết nối, bao gồm các biên dịch Python dưới dạng chuỗi được đánh giá ở đầu kia. Ví dụ: bạn có thể gửi chương trình Python bất kỳ bằng cách lưu nó dưới dạng chuỗi.

    result = mechanical.run_python_script("2+3")

    result = mechanical.run_python_script("ExtAPI.DataModel.Project.ProjectDirectory")

    Với tùy chọn batch=False trong launch_mechanical(), người ta có thể quan sát hiệu quả của trình biên dịch:

    Remote Mechanical Sessions

    Để kết nối thủ công với tác vụ cục bộ/từ xa được khởi chạy bằng Standalone Mechanical, hãy sử dụng lệnh Mechanical(). Bạn có thể tìm thấy chi tiết về phương pháp này trong Connecting to a remote session

    Dưới đây là code hoàn chỉnh, và kết quả từ số lượng vật thể như trên

    import ansys.mechanical.core as pymechanical

    mechanical = pymechanical.launch_mechanical()

    #print(mechanical)

    file =  r'D:\\Workdir\\bracket.mechdb'  # mechdb is a Standalone Mechanical filetype

    command = f'ExtAPI.DataModel.Project.Open("{file}")'

    mechanical.run_python_script(command)

    mechanical.run_python_script("allbodies=ExtAPI.DataModel.Project.Model.GetChildren( DataModelObjectCategory.Body,True)")

    mechanical.run_python_script("allbodies.Count")

    Remote Mechanical Sessions

    Embedded Instances

    Trong chế độ này, PyMechanical nhúng trực tiếp một phiên bản Mechanical dưới dạng đối tượng Python và một đối tượng Mechanical được gửi trực tiếp vào bộ nhớ Python. Không có phiên bản bên ngoài nào của Mechanical đang chạy. Tính năng phiên bản nhúng này được hỗ trợ trên Windows bắt đầu từ phiên bản 2023 R1 và sẽ được hỗ trợ trên Linux từ phiên bản 2023 R2.

    Dưới đây là code để có được số lượng vật thể như trên.

    from ansys.mechanical.core import App, global_variables

    app = App(version=232)

    globals().update(global_variables(app))

    #print(app)

    file =  r'D:\\Workdir\\bracket.mechdb'

    app.open(file)

    allbodies=ExtAPI.DataModel.Project.Model.GetChildren( Ansys.Mechanical.DataModel.Enums.DataModelObjectCategory.Body,True)

    print(allbodies.Count)

    Embedded Instances

    Chế độ dòng lệnh chỉ được sử dụng để mô tả cách làm. Xin lưu ý, ở một trong hai chế độ, bạn có thể thực thi tệp tập lệnh Python có các lệnh sau.

    (pymech_test) PS D:\Workdir\pymechanical> python .\my_script_file.py

    Dùng thử PyMechanical

    Đây chỉ là một cái nhìn tổng quan để giới thiệu cho bạn về PyMechanical. Để khám phá thêm, vui lòng tham khảo tài liệu đầy đủ.

    Tóm lại, PyMechanical cung cấp quyền cho các nhà phát triển, kỹ sư và nhà nghiên cứu phương pháp để mở khóa toàn bộ tiềm năng của Ansys Mechanical bằng cách đưa nó vào Python. Cho dù bạn chọn sử dụng PyMechanical làm ứng dụng khách cho phiên Mechanical từ xa hay nhúng một phiên bản của Mechanical làm đối tượng Python, bạn có thể mở rộng khả năng tự động hóa và tích hợp với một loạt các chức năng Python.


    - Làm ơn ghi rõ "Nguồn Advantech .,Jsc" hoặc "Theo www.advantech.vn" nếu bạn muốn phổ biến thông tin này