实现步骤如下:
- 在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()))
-
打开Python IDLE(需要python3的编译器),如下File —>Open打开client.py
运行Run:Run Module或F5运行
-
查看ANSA中运行情况:可以看到已经创建了节点(只有关闭主进程的socket后ANSA才能操作,创建的Grid才出现)
添加WX公众号 - CAE软件二次开发Lab,查看更多精彩技术文章!
目前存在问题:
目前仅能在ANSA主线程中运行socket,但运行socket后ANSA主线程被锁定,导致ANSA无法操作;只有关闭主进程的socket后ANSA才能操作,创建的ANSA对象才出现。