python cad 二次开发

from pyautocad import Autocad, APoint
import win32com.client
from win32com.client import VARIANT
from win32com.client import Dispatch
import pythoncom

要么用pyautocad这个,要么用win32com

cad不识别直接传过去的坐标,需要转换下,以下是关键代码

def vtpnt(x, y, z=0):
    """坐标点转化为浮点数"""
    return VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x, y, z))


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


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


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


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

 下面是如何启动autocad2007,其他的自己试吧

if __name__ == '__main__':
    # AutoCAD2007 ProgId is "AutoCAD.Application.17"
    acad = Dispatch("AutoCAD.Application.17")
    doc = acad.ActiveDocument
    doc.Utility.Prompt("Hello AutoCAD\n")
    mp = doc.ModelSpace

 

posted on 2022-01-06 17:48  风中狂笑  阅读(2248)  评论(0编辑  收藏  举报

导航