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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM