python:ActiveX

文章目录

  • 一、application 版本
  • 二、基本操作
  • 三、数据转换
  • 四、创建选择集
  • 五、对象常用方法
    • 1、对象相交

一、application 版本

AutoCAD产品名 版本号 ProgID
AutoCAD 2004 R16 AutoCAD.Application.16
AutoCAD 2005 R16.1 AutoCAD.Application.16.1
AutoCAD 2006 R16.2 AutoCAD.Application.16.2
AutoCAD 2007 R17 AutoCAD.Application.17
AutoCAD 2008 R17.1 AutoCAD.Application.17.1
AutoCAD 2009 R17.2 AutoCAD.Application.17.2
AutoCAD 2010 R18 AutoCAD.Application.18
AutoCAD 2011 R18.1 AutoCAD.Application.18.1
用户最后一次使用的CAD AutoCAD.Application

二、基本操作

import pythoncom
import win32com.client as win32

cad = win32.Dispatch("AutoCAD.Application")
doc = cad.ActiveDocument
msp = doc.ModelSpace
color = cad.GetInterfaceObject("AutoCAD.AcCmColor.17")

三、数据转换

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

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

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

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

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

四、创建选择集

try:
    ssget1 = doc.SelectionSets.Add("SS1")  # 若无选择集,尝试新增"SS1"选择集
except BaseException:
    ssget1 = doc.SelectionSets("SS1")  # 如果"SS1"选择集已存在,就以它作为我们的选择集
    ssget1.Clear()  # 清空"SS1"选择集的内容

filterType = [2, 8]  # 定义过滤类型
filterData = ["FWSX", "FWSX"]  # 设置过滤参数
filterType = vtInt(filterType)  # 数据类型转换
filterData = vtVariant(filterData)  # 数据类型转换

ssget1.Select(5, 0, 0, filterType, filterData)  # 实现过滤选择

语法:

object.Select(Mode, Point1, Point2, FilterType, FilterData)
  • object:选择集
  • Mode:选择模式
模式 说明
0 选择完全在矩形区域内的所有对象,矩形对角由 Point1 和 Point2 定义
1 选择在矩形区域内和与矩形区域相交的对象,矩形对角由 Point1 和 Point2 定义
3 选择最近的选择集。如果用户在图纸空间和模型空间之间进行切换并试图使用选择集,该模式将被忽略
4 选择最近生成的可见对象
5 选择所有对象
  • Point1:3维坐标点
  • Point2:3维坐标点
  • FilterType:过滤类型(DXF组码)
DXF代码 过滤器类型
0 对象类型(字符串),如“Line”、“Circle”、“Arc”等等
2 对象类型(字符串),命名对象的表(给定)名称
8 图层名称(字符串),如“Layer0”
60 对象的可见性(整数),0可见,1不可见
62 颜色号(整数),0到256的数字索引值,0代表随块,256代表随层,负值代表图层关闭
67 模型/图纸空间指示(整数),使用0或忽略为模型空间,1为图纸空间
  • FilterData:过滤参数

其他对象选择方法:

方法 说明
Addltem 添加一个或多个对象到指定的选择集。
Select 选择对象并将其放入活动的选择集中。用户可选择所有对象、矩形窗选区域或矩形框选区域的对象、多边形窗选区域或多边形框选区域的对象、栅选的对象、最近创建的对象、最近选择集的对象。
SelectAtPoint 选择通过给定点的对象并将其放入活动的选择集中。
SelectByPolygon 通过栅选的对象并将其放入活动的选择集中。
SelectOnScreen 提示用户从屏幕中拾取对象并将其添加到活动的选择中。

五、对象常用方法

1、对象相交

rel = obj1.IntersectWith(obj2, 0)
print(rel)

(1218.1517971803642, 625.2198412500425, 0.0, 1144.7959481512107, 361.0629323395639, 0.0)

你可能感兴趣的:(CAD二次开发,python)