栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

ANSA二次开发 - 外部程序采用socket与ANSA实现通信

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ANSA二次开发 - 外部程序采用socket与ANSA实现通信

实现步骤如下:

  1. 在ANSA Script Edit中运行服务端代码:
# 服务端代码socket_server.py
 
import socket
import os
import sys
 
def work():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(('localhost',1000))
    sock.listen(1)
    while True:
        try:
            conn, addr = sock.accept()
            ret = conn.recv(2048)
            # result = os.popen(ret).read()
            # popen(ret)命令错误
            result = exec(ret)
            conn.send("success".encode())
        except KeyboardInterrupt:
            print('Now we will exit')
            sys.exit(0)
    sock.close()

if __name__ == '__main__':
    work()
点击【运行】按钮:


运行后ANSA主程序锁定:

2. 客户端代码client.py

# 客户端代码client.py
import socket
 
def socket_send(command):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect(('localhost', 1000))
    sock.send(command)
    result = sock.recv(2048)
    sock.close()
    return result
 
cmd = '''from ansa import base
from ansa import constants
fields = {'X1': 3.5, 'X2': 10.8, 'X3': 246.7}
new_grid = base.CreateEntity(constants.NASTRAN, 'GRID', fields)
print('The id of the new grid:', new_grid._id)
'''
print(socket_send(cmd.encode()))
  1. 打开Python IDLE(需要python3的编译器),如下File —>Open打开client.py

    运行Run:Run Module或F5运行

  2. 查看ANSA中运行情况:可以看到已经创建了节点(只有关闭主进程的socket后ANSA才能操作,创建的Grid才出现)

添加WX公众号 - CAE软件二次开发Lab,查看更多精彩技术文章!

目前存在问题:

目前仅能在ANSA主线程中运行socket,但运行socket后ANSA主线程被锁定,导致ANSA无法操作;只有关闭主进程的socket后ANSA才能操作,创建的ANSA对象才出现。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968890.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号