创建python与AutoCAD连接的两种方式

一、使用pyautocad库进行连接

pyautocad官方文档

create AutoCAD application or connect to alreadly running application

# 导入所需的模块
from pyautocad import Autocad, Apoint
# 创建连接
acad = Autocad(create_if_not_exists=True)
# 检测连接是否建立成功
acad.prompt("Hello, Autocad from Python\n")	# 向CAD程序发送消息
print(acad.doc.Name)				# 获取连接的CAD文件名

当连接创建完成之后扁可以通过acad对象进行相关的操作了。pyautocad相关操作

二、使用pywin32进行连接

# 导入相关模块
import win32com.client
import pythoncom
import math
from pyautocad import APoint

# 创建连接
acad = win32com.client.Dispatch("AutoCAD.Application.19")
doc = acad.ActiveDocument
doc.Utility.Prompt("Hello! Autocad from pywin32.")
mp = doc.ModelSpace
print(doc.Name)

# 数据转换,由于python对数据类型的定义相对简单,进行数据的转化是必要的
def vtPnt(x, y, z=0):
    """坐标点转化为浮点数"""
    return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x, y, z))

def vtObj(obj):
    """转化为对象数组"""
    return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_DISPATCH, obj)

def vtFloat(list):
    """列表转化为浮点数"""
    return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, list)

def vtInt(list):
    """列表转化为整数"""
    return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_I2, list)

def vtVariant(list):
    """列表转化为变体"""
    return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_VARIANT, list)

使用pywin32是一种很好的方式,因为在windows下,pywin32理论上可以和任意的程序创建连接;对pywin32模块常用API进行学习
是必要的

你可能感兴趣的:(python,for,AutoCAD,python)