AutoCAD中使用Python的DimAligned对象

在本文中,我介绍了 AutoCAD 中使用 Python 的 DimAligned 对象。一般来说,手动添加维度是一项非常繁琐的任务,如果我使用 Python 自动化来代替,我可以避免。

对于本教程,我使用 Python 中的 pyautocad 模块。为此,我还可以使用 Python 中的pywin32win32com模块。这些模块提供了另一种在 Python 中执行AutoCAD 自动化的方法。请查看我以前的博客文章以获取有关这些模块的更多信息。

将 DimAligned 对象添加到 AutoCAD 工程图中

正如文章的名称所示,我关注线性实体的尺寸。我可以为此使用 DimAligned 对象。

我可以使用 AddDimAligned 方法添加尺寸。首先要记住的是 DimAligned 对象需要 3 个参数:

  • ExtLine1Point(第一个端点)
  • ExtLine2Point(第二个端点)
  • TextPosition(尺寸文本)

在这种情况下,我的模型空间中有两个几何图形。左边是由线组成,右边是折线。您可以在下面的屏幕截图中看到这一点。

鉴于我可以获取AutoCAD Line对象的起点和终点,我可以遍历 AcDbLine 对象,将这些点作为维度的起点和终点传递。

我使用中点公式,偏移系数为 100,用于文本位置。请参阅下面的代码。

for l in acad.iter_objects_fast(object_name_or_list="AcDbLine"):
    acad.model.AddDimAligned(APoint(l.StartPoint), APoint(l.EndPoint), APoint((l.StartPoint[0]+l.EndPoint[0]+100)/2, (l.StartPoint[1]+l.EndPoint[1]+100)/2, 0))

另一方面,折线对象为每个节点的坐标返回一个双精度数组。在这种情况下,我可以遍历该数组并在每次迭代中将这些点作为起点和终点传递。

for i in acad.iter_objects_fast(object_name_or_list="AcDbPolyline"):
    nodes = len(i.Coordinates)/2
    j=0
    while j <= nodes+1:
        acad.model.AddDimAligned(APoint(i.Coordinates[j], i.Coordinates[j+1], 0),    APoint(i.Coordinates[j+2], i.Coordinates[j+3], 0),    APoint((i.Coordinates[j]+i.Coordinates[j+2]+100)/2,     (i.Coordinates[j+1]+i.Coordinates[j+3]+100)/2, 0))
             j+=2

当然,这是向任何线性几何图形添加尺寸的非常基本的方法。尽管如此,让我现在实现它并查看结果。

显然,正如您在上面的屏幕截图中看到的,我可以说我已将尺寸添加到线性几何图形中。

AutoCAD 中 DimAligned 对象的属性

现在我已经为图形添加了尺寸,我想介绍它的一些重要属性。我无法在本文中解释它们中的每一个,因为总共有大约 115 个属性,其中许多用于不同的维度方面。

但首先,我在下面的 Python 代码中展示了一些基本属性。

# general properties
print(l.ObjectName)

print(l.Rotation) # rotation angle of object in radians

print(l.LinearScaleFactor) 
# specfies global scale factor for linear dimensioning  measurements

print(l.StyleName)

l.DecimalSeparator = "."
print(l.DecimalSeparator)


O/p:

AcDbAlignedDimension
0.0
1.0
ISO-25
.

因为我的绘图中存在多条尺寸线,所以我选择其中一条来应用这些属性。还有 ArrowHead 属性,我可以通过传递一个整数值来设置箭头大小。

# arrow head properties
l.ArrowheadSize = 15
print(l.ArrowheadSize)
print(l.Arrowhead1Type)
print(l.Arrowhead2Type)

O/p:
15.0
0
0

正如我在上面的代码中所示,我可以获取和设置箭头大小和类型。对于箭头类型,有多个选项。默认值为 acArrowDefault (0)。其他类型如下:

  • acArrow 默认
  • ac箭头点
  • acArrowDotSmall
  • acArrowDotBlank
  • acArrowOrigin
  • acArrowOrigin2
  • acArrowOpen
  • acArrowOpen90
  • acArrowOpen30
  • acArrow已关闭
  • acArrowSmall
  • acArrowNone
  • acArrowOblique
  • acArrowBoxFilled
  • ac箭头框空白
  • acArrow关闭空白
  • acArrowDatumFilled
  • acArrowDatumBlank
  • acArrow积分
  • acArrowArchTick
  • acArrowUserDefined 只读

同样,我有一些尺寸线属性,如下所示。

l.DimensionLineColor = 200
print("Dimension line color on the basis of 0-256 color index: " + str(l.DimensionLineColor))
    
print("The dimension line extends beyond the extension line when oblique strokes are drawn instead of arrowheads: " + str(l.DimensionLineExtend))

print("The dimension line type is: " + l.DimensionLineType)l.DimensionLineWeight = 100    

print("Dimension lineweight: " + str(l.DimensionLineWeight))
    
print("Dimension text direction: ", end="" )
    
print(l.DimTxtDirection) 
# False: Left to right reading style
# True: Right to Left reading style 

print(l.Fit)

O/p:


Dimension line color on the basis of 0-256 color index: 200
The dimension line extends beyond the extension line when oblique strokes are drawn instead of arrowheads: 0.0
The dimension line type is: ByBlock
Dimension lineweight: 100
Dimension text direction: False
3

Fit 属性有 4 个可能的值,如下所示:

  • acTextAndArrows(0) : 将文本和箭头都放在延长线内。
  • acArrowsOnly(1):仅将箭头放置在延长线内。文本放置在箭头之外。
  • acTextOnly(2):仅将文本放置在扩展线内。箭头位于延长线之外。
  • acBestFit(3):这是默认选项,在给定可用空间的情况下,将文本和箭头放置在最合适的位置。当有足够的空间用于文本和箭头时,此选项会将两者放置在延长线之间。

还有一些其他属性,例如文本属性和公差属性。让我从每个属性中添加一些来解释。

#Text properties
l.TextHeight = 20
print(l.TextHeight)
print(l.TextInside) 

#Tolerance properties
print(l.ToleranceDisplay)
print(l.TolerancePrecision)

O/p:
20.0
False
0
2

此处,TextInside 属性具有一个布尔值,用于指定是强制将文本添加到扩展线 (true) 还是仅在相应的有空格时 (false)。

为了在尺寸文本中指定公差,我有 ToleranceDisplay 属性,它也返回一个布尔值。ToleranceDisplay 默认返回 False,即如果没有指定公差。

通常,公差精度有 4 个可能的值:

  • acTolNone:0(默认)
  • acTol对称:1
  • 行动偏差:2
  • acTolLimits:3
  • acTilBasic: 4

事实上,正如我自己也已经提到的,还有比我上面指定的更多的属性,但这些只是展示如何使用它们的一些。下面是 DimAligned AutoCAD 对象类的方法列表。

  • ArrayPolar
  • 数组矩形
  • 复制
  • 删除
  • 获取边界框
  • 相交
  • 镜子
  • 镜像3D
  • 移动
  • 旋转
  • 旋转3D
  • 比例实体
  • 更新

结束语

最后,我可以说我已经介绍了 AutoCAD 中的 DimAligned 对象以及我可以使用 Python 自动化的方式。同样,还有其他维度对象,我将在以后的博文中介绍。如果需要更多技术信息或咨询,请随时使用我们的联系表与我联系。此外,如有任何疑问,请在我们的评论框中发表评论。

You May Also Like

Leave a Reply

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据