Pycomcad中的过滤机制及访问引用块内对象简述
1.过滤机制
所谓过滤机制,就是选择集的规则,过滤器列表由成对的参数组成。第一个参数标识过滤器的类型(例如对象),第二个参数指定要过滤的值(例如圆)。过滤器类型是指定使用哪种过滤器的 DXF 组码。
有关 DXF 组码的完整列表,请参见《DXF 参考手册》中的“组码值类型”(https://github.com/JohnYang1210/PycomCAD ,欢迎各位老铁star,pullrequest)
- 过滤器列表可以是单个条件,也可以是多个条件,过滤器列表中的符号名称和字符串还可以包含通配符模式。
1.1 过滤器参数
滤器参数均为数组,在Pycomcad中需要使用VtInt和VtVariant函数进行转换, 过滤器类型为整数(VtInt转换),过滤器值为变量(VtVariant转换)。每个过滤器类型都必须与过滤器值成对相应出现。
- 如:
ft=[0] # 过滤器是对象类型
ft=VtInt(ft) #对过滤器进行转换
fd=['Circle'] # 过滤器值为圆
fd=VtVariant(fd) #过滤器值转换
- 以上是单个条件,下面是两个条件:
ft=[0,8]
ft=VtInt(ft)
fd=['Circle','0']
fd=VtVariant(fd)
这样选择的是位于'0'图层上的圆
1.2增加过滤器的复杂程度
如果指定多个选择条件,AutoCAD 将假设选定对象必须符合所有条件。但用户可以按照其他方式来指定条件。对于数字项,用户可以指定关系运算(例如,圆的半径必须大于或等于 5.0); 对于所有项,用户可以指定逻辑运算(例如 Text 或 Mtext)。
-
(1)使用 -4 DXF 组码来指示过滤器规格中的关系运算符。以字符串的形式来指定运算符。
-
(2)过滤器列表中的逻辑运算符也由 -4 组代码表示,运算符为字符串,但必须组对。运算符以小于号开始 (<),以大于号结束 (>)。下表列出了可以在选择集过滤中使用的逻辑运算符
-
如:
ft=[0,-4,40,8]
ft=VtInt(ft)
fd=['Circle','>=',5,'0']
fd=VtVariant(fd)
这个选择的是位于'0'图层上所有半径大于等于5的圆。
对于逻辑关系:
ft=[-4,0,0,-4]
ft=VtInt(ft)
fd=['<or','TEXT','MTEXT','or>']
fd=VtVariant(fd)
这个选择是选择单行文字或者多行文字
1.3 在选择集过滤器条件中使用通配符模式
- 如:
ft=vtInt([0,1]) # 1-->图元的主要文字值
fd=VtVariant(['MTEXT',' * THE * '])
选择的是所有文字字符串中出现“The”的多行文字
- 如:
ft=VtInt([100,2]) # 100-->子类标记,2-->块名称
fd=VtVariant['AcDbBlockReference','~'] #子类标记名为AcDbBlockReference,即引用块。是匹配后面之外的所有值,只有一个'',即包含了所有非空名称的引用块
1.4创建选择集并进行选择
在Pycomcad中,用slt=acad.GetSelectionSets(str)来进行创建,这里需要注意的有几点:(1)创建完后,经过使用后,最好最后都对slt进行释放(slt.Delete()),否则当一个dwg文件没有被关掉再打开的情况下,创建之前名字(str)的选择集是不被允许的,要报错。(2)slt有几种选择的方法,slt.Select,slt.SelectAtPoint,slt.SelectByPolygon,slt.SelectOnScreen等,这里不在赘述,源码中可见。
2引用块内对象访问
目前若要访问块内对象,主要将块炸开,然后炸开后返回组成该块的所有对象元组,需要注意的是,在选择集选中的块对象是块引用对象,与块对象是公用了一个Handle,但不是同一个对象。对于块引用对象,没有Explode方法,所以需要调用acad.Handle2Object方法来得到块对象。
下面是上述内容的一个例子:
import sys
sys.path.append(r'G:\PycharmProject\PycomCAD\PycomCAD')
from pycomcad import *
acad=Autocad()
acad.CurrentFilename
'Drawing1.dwg'
acad.IsEarlyBind
True
# acad.TurnOnEarlyBind()
ft=[100,2]
ft=VtInt(ft)
fd=['AcDbBlockReference','~']
fd=VtVariant(fd)
slt=acad.GetSelectionSets('slt11111')
slt.SelectOnScreen(ft,fd) #屏幕选择,只选择块
slt.Count
7
slt.Item(0).Highlight(True)# 高亮第一个块引用对象
help(slt.Item(0))
Help on IAcadEntity in module win32com.gen_py.4E3F492A-FB57-4439-9BF0-1567ED84A3A9x0x1x0 object:
class IAcadEntity(win32com.client.DispatchBaseClass)
| IAcadEntity(oobj=None)
|
| AutoCAD Entity Interface
|
| Method resolution order:
| IAcadEntity
| win32com.client.DispatchBaseClass
| builtins.object
|
| Methods defined here:
|
| ArrayPolar(self, NumberOfObjects=<PyOleEmpty object at 0x000002B333A49150>, AngleToFill=<PyOleEmpty object at 0x000002B333A49150>, CenterPoint=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an array of selected objects in a polar pattern.
|
| ArrayRectangular(self, NumberOfRows=<PyOleEmpty object at 0x000002B333A49150>, NumberOfColumns=<PyOleEmpty object at 0x000002B333A49150>, NumberOfLevels=<PyOleEmpty object at 0x000002B333A49150>, DistBetweenRows=<PyOleEmpty object at 0x000002B333A49150>, DistBetweenCols=<PyOleEmpty object at 0x000002B333A49150>, DistBetweenLevels=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an array of selected objects in a rectangular pattern.
|
| Copy(self)
| Copies the entity object.
|
| Delete(self)
| Deletes a specified object
|
| Erase(self)
| Erases all the objects in a selection set
|
| GetBoundingBox(self, MinPoint=<PyOleMissing object at 0x000002B333A49390>, MaxPoint=<PyOleMissing object at 0x000002B333A49390>)
| Returns the min and max point of the bounding box of the entity object.
|
| GetExtensionDictionary(self)
| Gets the extension dictionary associated with an object
|
| GetXData(self, AppName=<PyOleEmpty object at 0x000002B333A49150>, XDataType=<PyOleMissing object at 0x000002B333A49390>, XDataValue=<PyOleMissing object at 0x000002B333A49390>)
| Gets the extended data (XData) associated with an object
|
| Highlight(self, HighlightFlag=<PyOleEmpty object at 0x000002B333A49150>)
| Highlights the entity object.
|
| IntersectWith(self, IntersectObject=<PyOleEmpty object at 0x000002B333A49150>, option=<PyOleEmpty object at 0x000002B333A49150>)
| Intersects with the input entity object.
|
| Mirror(self, Point1=<PyOleEmpty object at 0x000002B333A49150>, Point2=<PyOleEmpty object at 0x000002B333A49150>)
| Mirrors selected objects about a line.
|
| Mirror3D(self, Point1=<PyOleEmpty object at 0x000002B333A49150>, Point2=<PyOleEmpty object at 0x000002B333A49150>, point3=<PyOleEmpty object at 0x000002B333A49150>)
| Mirrors selected objects about a plane defined by three points.
|
| Move(self, FromPoint=<PyOleEmpty object at 0x000002B333A49150>, ToPoint=<PyOleEmpty object at 0x000002B333A49150>)
| Moves the entity object from source to destination.
|
| Rotate(self, BasePoint=<PyOleEmpty object at 0x000002B333A49150>, RotationAngle=<PyOleEmpty object at 0x000002B333A49150>)
| Rotates the entity object about a point.
|
| Rotate3D(self, Point1=<PyOleEmpty object at 0x000002B333A49150>, Point2=<PyOleEmpty object at 0x000002B333A49150>, RotationAngle=<PyOleEmpty object at 0x000002B333A49150>)
| Rotates the entity object about a 3D line.
|
| ScaleEntity(self, BasePoint=<PyOleEmpty object at 0x000002B333A49150>, ScaleFactor=<PyOleEmpty object at 0x000002B333A49150>)
| Scale the entity object with respect to the base point and the scale factor.
|
| SetXData(self, XDataType=<PyOleEmpty object at 0x000002B333A49150>, XDataValue=<PyOleEmpty object at 0x000002B333A49150>)
| Sets the extended data (XData) associated with an object
|
| TransformBy(self, TransformationMatrix=<PyOleEmpty object at 0x000002B333A49150>)
| Performs the specified transformation on the entity object.
|
| Update(self)
| Updates the graphics of the entity object.
|
| __iter__(self)
| Return a Python iterator for this object
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| CLSID = IID('{B58808B5-37AC-431F-BA80-A8D381BB4C5C}')
|
| coclass_clsid = IID('{571498B7-54A9-409E-9B06-9DD7DBC7E0BD}')
|
| ----------------------------------------------------------------------
| Methods inherited from win32com.client.DispatchBaseClass:
|
| __eq__(self, other)
| Return self==value.
|
| __getattr__(self, attr)
|
| __init__(self, oobj=None)
| Initialize self. See help(type(self)) for accurate signature.
|
| __ne__(self, other)
| Return self!=value.
|
| __repr__(self)
| Return repr(self).
|
| __setattr__(self, attr, value)
| Implement setattr(self, name, value).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from win32com.client.DispatchBaseClass:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from win32com.client.DispatchBaseClass:
|
| __hash__ = None
slt.Item(0).GetBoundingBox()
((3671.238929877034, -1710.2902729521002, -1e-08),
(5127.713260427801, -850.7467697963812, 1e-08))
slt.Item(0).HasExtensionDictionary
True
blk=acad.acad.ActiveDocument.ActiveLayout.Block
help(blk)
Help on IAcadBlock in module win32com.gen_py.4E3F492A-FB57-4439-9BF0-1567ED84A3A9x0x1x0 object:
class IAcadBlock(win32com.client.DispatchBaseClass)
| IAcadBlock(oobj=None)
|
| A block definition containing a name and a set of objects
|
| Method resolution order:
| IAcadBlock
| win32com.client.DispatchBaseClass
| builtins.object
|
| Methods defined here:
|
| Add3DFace(self, Point1=<PyOleEmpty object at 0x000002B333A49150>, Point2=<PyOleEmpty object at 0x000002B333A49150>, point3=<PyOleEmpty object at 0x000002B333A49150>, Point4=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a 3DFace object given four vertices
|
| Add3DMesh(self, M=<PyOleEmpty object at 0x000002B333A49150>, N=<PyOleEmpty object at 0x000002B333A49150>, PointsMatrix=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a free-form 3D mesh, given the number of points in the M and N directions and the coordinates of the points in the M and N directions
|
| Add3DPoly(self, PointsArray=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a 3D polyline from the given array of coordinates
|
| AddArc(self, Center=<PyOleEmpty object at 0x000002B333A49150>, Radius=<PyOleEmpty object at 0x000002B333A49150>, StartAngle=<PyOleEmpty object at 0x000002B333A49150>, EndAngle=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an arc given the center, radius, start angle, and end angle of the arc
|
| AddAttribute(self, Height=<PyOleEmpty object at 0x000002B333A49150>, Mode=<PyOleEmpty object at 0x000002B333A49150>, Prompt=<PyOleEmpty object at 0x000002B333A49150>, InsertionPoint=<PyOleEmpty object at 0x000002B333A49150>, Tag=<PyOleEmpty object at 0x000002B333A49150>, Value=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an attribute definition at the given location with the specified properties
|
| AddBox(self, Origin=<PyOleEmpty object at 0x000002B333A49150>, Length=<PyOleEmpty object at 0x000002B333A49150>, Width=<PyOleEmpty object at 0x000002B333A49150>, Height=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a 3D solid box with edges parallel to the axes of the WCS
|
| AddCircle(self, Center=<PyOleEmpty object at 0x000002B333A49150>, Radius=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a circle given a center point and radius
|
| AddCone(self, Center=<PyOleEmpty object at 0x000002B333A49150>, BaseRadius=<PyOleEmpty object at 0x000002B333A49150>, Height=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a 3D solid cone with the base on the XY plane of the WCS
|
| AddCustomObject(self, ClassName=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a Custom object
|
| AddCylinder(self, Center=<PyOleEmpty object at 0x000002B333A49150>, Radius=<PyOleEmpty object at 0x000002B333A49150>, Height=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a 3D solid cylinder whose base is on the XY plane of the WCS
|
| AddDim3PointAngular(self, AngleVertex=<PyOleEmpty object at 0x000002B333A49150>, FirstEndPoint=<PyOleEmpty object at 0x000002B333A49150>, SecondEndPoint=<PyOleEmpty object at 0x000002B333A49150>, TextPoint=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an angular dimension for an arc, two lines, or a circle
|
| AddDimAligned(self, ExtLine1Point=<PyOleEmpty object at 0x000002B333A49150>, ExtLine2Point=<PyOleEmpty object at 0x000002B333A49150>, TextPosition=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an aligned dimension object
|
| AddDimAngular(self, AngleVertex=<PyOleEmpty object at 0x000002B333A49150>, FirstEndPoint=<PyOleEmpty object at 0x000002B333A49150>, SecondEndPoint=<PyOleEmpty object at 0x000002B333A49150>, TextPoint=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an angular dimension for an arc, two lines, or a circle
|
| AddDimArc(self, ArcCenter=<PyOleEmpty object at 0x000002B333A49150>, FirstEndPoint=<PyOleEmpty object at 0x000002B333A49150>, SecondEndPoint=<PyOleEmpty object at 0x000002B333A49150>, ArcPoint=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an arc length dimension for an arc
|
| AddDimDiametric(self, ChordPoint=<PyOleEmpty object at 0x000002B333A49150>, FarChordPoint=<PyOleEmpty object at 0x000002B333A49150>, LeaderLength=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a diametric dimension for a circle or arc given the two points on the diameter and the length of the leader line
|
| AddDimOrdinate(self, DefinitionPoint=<PyOleEmpty object at 0x000002B333A49150>, LeaderEndPoint=<PyOleEmpty object at 0x000002B333A49150>, UseXAxis=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an ordinate dimension given the definition point, and leader endpoint
|
| AddDimRadial(self, Center=<PyOleEmpty object at 0x000002B333A49150>, ChordPoint=<PyOleEmpty object at 0x000002B333A49150>, LeaderLength=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a radial dimension for the selected object at the given location
|
| AddDimRadialLarge(self, Center=<PyOleEmpty object at 0x000002B333A49150>, ChordPoint=<PyOleEmpty object at 0x000002B333A49150>, OverrideCenter=<PyOleEmpty object at 0x000002B333A49150>, JogPoint=<PyOleEmpty object at 0x000002B333A49150>, JogAngle=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a jogged radial dimension for an arc, circle, or polyline arc segment
|
| AddDimRotated(self, ExtLine1Point=<PyOleEmpty object at 0x000002B333A49150>, ExtLine2Point=<PyOleEmpty object at 0x000002B333A49150>, DimLineLocation=<PyOleEmpty object at 0x000002B333A49150>, RotationAngle=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a rotated linear dimension
|
| AddEllipse(self, Center=<PyOleEmpty object at 0x000002B333A49150>, MajorAxis=<PyOleEmpty object at 0x000002B333A49150>, RadiusRatio=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an ellipse in the XY plane of the WCS given the center point, a point on the major axis, and the radius ratio
|
| AddEllipticalCone(self, Center=<PyOleEmpty object at 0x000002B333A49150>, MajorRadius=<PyOleEmpty object at 0x000002B333A49150>, MinorRadius=<PyOleEmpty object at 0x000002B333A49150>, Height=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a 3D solid elliptical cone on the XY plane of the WCS given the Center, MajorRadius, MinorRadius, and Height
|
| AddEllipticalCylinder(self, Center=<PyOleEmpty object at 0x000002B333A49150>, MajorRadius=<PyOleEmpty object at 0x000002B333A49150>, MinorRadius=<PyOleEmpty object at 0x000002B333A49150>, Height=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a 3D solid elliptical cylinder whose base is on the XY plane of the WCS, given the Center, MajorRadius, MinorRadius, and Height
|
| AddExtrudedSolid(self, Profile=<PyOleEmpty object at 0x000002B333A49150>, Height=<PyOleEmpty object at 0x000002B333A49150>, TaperAngle=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an extruded solid given the Profile, Height, and TaperAngle
|
| AddExtrudedSolidAlongPath(self, Profile=<PyOleEmpty object at 0x000002B333A49150>, Path=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an extruded solid given the profile and an extrusion path
|
| AddHatch(self, PatternType=<PyOleEmpty object at 0x000002B333A49150>, PatternName=<PyOleEmpty object at 0x000002B333A49150>, Associativity=<PyOleEmpty object at 0x000002B333A49150>, HatchObjectType=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a Hatch object
|
| AddLeader(self, PointsArray=<PyOleEmpty object at 0x000002B333A49150>, Annotation=<PyOleEmpty object at 0x000002B333A49150>, Type=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a leader line, given the coordinates of the points
|
| AddLightWeightPolyline(self, VerticesList=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a lightweight polyline from a list of vertices
|
| AddLine(self, StartPoint=<PyOleEmpty object at 0x000002B333A49150>, EndPoint=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a line passing through two points
|
| AddMInsertBlock(self, InsertionPoint=<PyOleEmpty object at 0x000002B333A49150>, Name=<PyOleEmpty object at 0x000002B333A49150>, Xscale=<PyOleEmpty object at 0x000002B333A49150>, Yscale=<PyOleEmpty object at 0x000002B333A49150>, Zscale=<PyOleEmpty object at 0x000002B333A49150>, Rotation=<PyOleEmpty object at 0x000002B333A49150>, NumRows=<PyOleEmpty object at 0x000002B333A49150>, NumColumns=<PyOleEmpty object at 0x000002B333A49150>, RowSpacing=<PyOleEmpty object at 0x000002B333A49150>, ColumnSpacing=<PyOleEmpty object at 0x000002B333A49150>, Password=<PyOleEmpty object at 0x000002B333A49150>)
| Inserts an array of blocks
|
| AddMLeader(self, PointsArray=<PyOleEmpty object at 0x000002B333A49150>, leaderLineIndex=<PyOleMissing object at 0x000002B333A49390>)
| Creates a multileader
|
| AddMLine(self, VertexList=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a polyface mesh from a list of vertices
|
| AddMText(self, InsertionPoint=<PyOleEmpty object at 0x000002B333A49150>, Width=<PyOleEmpty object at 0x000002B333A49150>, Text=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an MText entity in a rectangle defined by the insertion point and width of the bounding box
|
| AddPoint(self, Point=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a Point object at a given location
|
| AddPolyfaceMesh(self, VertexList=<PyOleEmpty object at 0x000002B333A49150>, FaceList=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a polyface mesh from a list of vertices
|
| AddPolyline(self, VerticesList=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a polyline from a list of vertices
|
| AddRaster(self, imageFileName=<PyOleEmpty object at 0x000002B333A49150>, InsertionPoint=<PyOleEmpty object at 0x000002B333A49150>, ScaleFactor=<PyOleEmpty object at 0x000002B333A49150>, RotationAngle=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a new raster image based on an existing image file
|
| AddRay(self, Point1=<PyOleEmpty object at 0x000002B333A49150>, Point2=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a ray passing through two unique points
|
| AddRegion(self, ObjectList=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a region from a set of entities. The given entities must form a closed coplanar region
|
| AddRevolvedSolid(self, Profile=<PyOleEmpty object at 0x000002B333A49150>, AxisPoint=<PyOleEmpty object at 0x000002B333A49150>, AxisDir=<PyOleEmpty object at 0x000002B333A49150>, Angle=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a revolved solid, given the region around an axis
|
| AddSection(self, FromPoint=<PyOleEmpty object at 0x000002B333A49150>, ToPoint=<PyOleEmpty object at 0x000002B333A49150>, planeVector=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a section plane
|
| AddShape(self, Name=<PyOleEmpty object at 0x000002B333A49150>, InsertionPoint=<PyOleEmpty object at 0x000002B333A49150>, ScaleFactor=<PyOleEmpty object at 0x000002B333A49150>, RotationAngle=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a Shape object based on a template identified by name, at the given insertion point, scale factor, and rotation
|
| AddSolid(self, Point1=<PyOleEmpty object at 0x000002B333A49150>, Point2=<PyOleEmpty object at 0x000002B333A49150>, point3=<PyOleEmpty object at 0x000002B333A49150>, Point4=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a 2D solid polygon
|
| AddSphere(self, Center=<PyOleEmpty object at 0x000002B333A49150>, Radius=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a sphere given the center and radius
|
| AddSpline(self, PointsArray=<PyOleEmpty object at 0x000002B333A49150>, StartTangent=<PyOleEmpty object at 0x000002B333A49150>, EndTangent=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a quadratic or cubic NURBS (nonuniform rational B-spline) curve
|
| AddTable(self, InsertionPoint=<PyOleEmpty object at 0x000002B333A49150>, NumRows=<PyOleEmpty object at 0x000002B333A49150>, NumColumns=<PyOleEmpty object at 0x000002B333A49150>, RowHeight=<PyOleEmpty object at 0x000002B333A49150>, ColWidth=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a table at the given insertion point, given the number of rows, number of columns, row height and column width
|
| AddText(self, TextString=<PyOleEmpty object at 0x000002B333A49150>, InsertionPoint=<PyOleEmpty object at 0x000002B333A49150>, Height=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a single line of text
|
| AddTolerance(self, Text=<PyOleEmpty object at 0x000002B333A49150>, InsertionPoint=<PyOleEmpty object at 0x000002B333A49150>, Direction=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a tolerance entity
|
| AddTorus(self, Center=<PyOleEmpty object at 0x000002B333A49150>, TorusRadius=<PyOleEmpty object at 0x000002B333A49150>, TubeRadius=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a torus at the given location
|
| AddTrace(self, PointsArray=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a Trace object from an array of points
|
| AddWedge(self, Center=<PyOleEmpty object at 0x000002B333A49150>, Length=<PyOleEmpty object at 0x000002B333A49150>, Width=<PyOleEmpty object at 0x000002B333A49150>, Height=<PyOleEmpty object at 0x000002B333A49150>)
| Creates a wedge with edges parallel to the axes given the length, width, and height
|
| AddXline(self, Point1=<PyOleEmpty object at 0x000002B333A49150>, Point2=<PyOleEmpty object at 0x000002B333A49150>)
| Creates an xline (an infinite line) passing through two specified points
|
| AttachExternalReference(self, PathName=<PyOleEmpty object at 0x000002B333A49150>, Name=<PyOleEmpty object at 0x000002B333A49150>, InsertionPoint=<PyOleEmpty object at 0x000002B333A49150>, Xscale=<PyOleEmpty object at 0x000002B333A49150>, Yscale=<PyOleEmpty object at 0x000002B333A49150>, Zscale=<PyOleEmpty object at 0x000002B333A49150>, Rotation=<PyOleEmpty object at 0x000002B333A49150>, bOverlay=<PyOleEmpty object at 0x000002B333A49150>, Password=<PyOleEmpty object at 0x000002B333A49150>)
| Attaches an external reference (xref) to the drawing
|
| Bind(self, bPrefixName=<PyOleEmpty object at 0x000002B333A49150>)
| Binds an external reference (xref) to a drawing
|
| Delete(self)
| Deletes a specified object
|
| Detach(self)
| Detachs an external reference (xref) from a drawing
|
| Erase(self)
| Erases all the objects in a selection set
|
| GetExtensionDictionary(self)
| Gets the extension dictionary associated with an object
|
| GetXData(self, AppName=<PyOleEmpty object at 0x000002B333A49150>, XDataType=<PyOleMissing object at 0x000002B333A49390>, XDataValue=<PyOleMissing object at 0x000002B333A49390>)
| Gets the extended data (XData) associated with an object
|
| InsertBlock(self, InsertionPoint=<PyOleEmpty object at 0x000002B333A49150>, Name=<PyOleEmpty object at 0x000002B333A49150>, Xscale=<PyOleEmpty object at 0x000002B333A49150>, Yscale=<PyOleEmpty object at 0x000002B333A49150>, Zscale=<PyOleEmpty object at 0x000002B333A49150>, Rotation=<PyOleEmpty object at 0x000002B333A49150>, Password=<PyOleEmpty object at 0x000002B333A49150>)
| Inserts a drawing file or a named block that has been defined in the current drawing
|
| Item(self, Index=<PyOleEmpty object at 0x000002B333A49150>)
| Gets the member object at a given index in a collection, group, or selection set
|
| Reload(self)
| Reloads the external reference (xref)
|
| SetXData(self, XDataType=<PyOleEmpty object at 0x000002B333A49150>, XDataValue=<PyOleEmpty object at 0x000002B333A49150>)
| Sets the extended data (XData) associated with an object
|
| Unload(self)
| Unloads the menu group or external reference
|
| __call__(self, Index=<PyOleEmpty object at 0x000002B333A49150>)
| Gets the member object at a given index in a collection, group, or selection set
|
| __int__(self, *args)
|
| __iter__(self)
| Return a Python iterator for this object
|
| __len__(self)
| #This class has Count() property - allow len(ob) to provide this
|
| __nonzero__(self)
| #This class has a __len__ - this is needed so 'if object:' always returns TRUE.
|
| __str__(self, *args)
| Return str(self).
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| CLSID = IID('{D113FB37-DE17-4644-8540-B2D35F1272FB}')
|
| coclass_clsid = IID('{9519F17C-24D4-40BE-8A6F-639B0EF82DA0}')
|
| ----------------------------------------------------------------------
| Methods inherited from win32com.client.DispatchBaseClass:
|
| __eq__(self, other)
| Return self==value.
|
| __getattr__(self, attr)
|
| __init__(self, oobj=None)
| Initialize self. See help(type(self)) for accurate signature.
|
| __ne__(self, other)
| Return self!=value.
|
| __repr__(self)
| Return repr(self).
|
| __setattr__(self, attr, value)
| Implement setattr(self, name, value).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from win32com.client.DispatchBaseClass:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from win32com.client.DispatchBaseClass:
|
| __hash__ = None
blk.Count
21
blk.IsXRef
False
blk.Name
'*Model_Space'
blk.GetXData
<bound method IAcadBlock.GetXData of <win32com.gen_py.AutoCAD 2016 Type Library.IAcadBlock instance at 0x2968727170744>>
slt.Item(0).Handle
'288'
explode=acad.Handle2Object(slt.Item(1).Handle).Explode()
explode
(<win32com.gen_py.AutoCAD 2016 Type Library.IAcadLWPolyline instance at 0x2968734182648>,
<win32com.gen_py.AutoCAD 2016 Type Library.IAcadCircle instance at 0x2968734182704>,
<win32com.gen_py.AutoCAD 2016 Type Library.IAcadText instance at 0x2968734182760>)
explode[2].TextString
'demo2'
slt.Item(2).ObjectID
140696309747552
acad.ObjectID2Object(slt.Item(2).ObjectID)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-30-c229de50f3fb> in <module>()
----> 1 acad.ObjectID2Object(slt.Item(2).ObjectID)
G:\PycharmProject\PycomCAD\PycomCAD\pycomcad.py in ObjectID2Object(self, ID)
497 return the object of specified ID
498 """
--> 499 return self.acad.ActiveDocument.ObjectIDToObject(ID)
500
501 def GetEntityByItem(self,i):
D:\Anaconda\lib\site-packages\win32com\client\__init__.py in __getattr__(self, attr)
471 args=self._prop_map_get_.get(attr)
472 if args is None:
--> 473 raise AttributeError("'%s' object has no attribute '%s'" % (repr(self), attr))
474 return self._ApplyTypes_(*args)
475
AttributeError: '<win32com.gen_py.AutoCAD 2016 Type Library.IAcadDocument instance at 0x2968734181360>' object has no attribute 'ObjectIDToObject'
import win32com.client
win32com.client.constants.acSelectionSetAll
5
ss=acad.GetSelectionSets('ss')
ss.Select(5,ft,fd)
ss.Count
24
acad.Handle2Object(slt.Item(3).Handle)==slt.Item(3)
True
acad.Handle2Object(slt.Item(3).Handle) is slt.Item(3)
False
窗口选对象实例
#选择四个点
pnt=acad.GetPoint()
pnt1=acad.GetPoint()
pnt2=acad.GetPoint()
pnt3=acad.GetPoint()
c=list(pnt)+list(pnt1)+list(pnt2)+list(pnt3)
slt=acad.GetSelectionSets('test2')
slt.SelectByPolygon(Mode=win32com.client.constants.acSelectionSetWindowPolygon,PointsList=VtVertex(*c)) #窗口选择,注意PointsList
for i in range(slt.Count):
ent=acad.Handle2Object(slt.Item(i).Handle)
print(ent.TextString)
CW Discharge Culvert before Aeration Tank
Plan & Pile Layout For
需要注意的是 使用SelectByPolygon方法时候,需保证PointsList所围成的矩形区域在CAD窗口内可见范围,否则,该方法将失效。