Python AutoCAD 注释

系统 475 0

本文不定期更新!

目 录

    • 0、相关文章
    • 1、前沿
    • 2、连接及库导入
    • 3、文字
      • (1) 创建新文本
      • (2) 对齐方式
      • (3) 文本缩放
    • 4、文本样式
      • (1) 创建文字样式
      • (2) 将特定文字样式设为当前
      • (3) 设置字体
      • (4) 设置字体倾斜角度
    • 5、尺寸标准
      • (1) 线性及旋转线性标注
      • (2) 对齐标注
      • (3) 角度标注
      • (4) 弧长标注
      • (5) 直径及半径标注
    • 6、标注样式
      • (1) 创建新标注样式
      • (2) 将特定标注样式设为当前
      • (3) 设置尺寸线及尺寸界限
      • (4) 设置箭头
      • (5) 设置标注文字
      • (6) 设置主单位
      • (7) 设置永久标注样式
    • 7、多重引线
      • (1) 创建多重引线
      • (2) 设置箭头大小
      • (3) 设置基线长度
      • (4) 设置基线间隙
      • (5) 指定文字样式
      • (6) 指定文字内容
    • 8、尾声

0、相关文章

  • Python pyautocad库 使用简介
  • Python AutoCAD 系统设置
  • Python AutoCAD 图层
  • Python AutoCAD 绘图
  • Python AutoCAD 修改
  • Python AutoCAD 块组
  • Python AutoCAD 注释
  • Python AutoCAD 文件
  • Python AutoCAD 选择集

1、前沿

标注是向图形中添加测量注释的过程,我们可以为各种对象沿各个方向创建标注。要简化图形组织和标注缩放,建议在图纸空间上创建标注,而不是在模型空间中创建标注。

2、连接及库导入

            
              
                #!/usr/bin/env python
              
              
                # -*- coding: utf-8 -*-
              
              
                '''
=============================
Author = Hulunbuir & DalaiNur
Email: liyang@alu.hit.edu.cn
Last Update: 2019.07.28 14:00
=============================
'''
              
              
                from
              
               pyautocad 
              
                import
              
               Autocad

acad 
              
                =
              
               Autocad
              
                (
              
              create_if_not_exists 
              
                =
              
              
                True
              
              
                )
              
              
acad
              
                .
              
              prompt
              
                (
              
              
                "Hello! AutoCAD from pyautocad."
              
              
                )
              
              
                print
              
              
                (
              
              acad
              
                .
              
              doc
              
                .
              
              Name
              
                )
              
            
          

3、文字

(1) 创建新文本

            
              
                #!/usr/bin/env python
              
              
                # -*- coding: utf-8 -*-
              
              
                '''
===========================
Author = Hulunbuir
Email:liyang@alu.hit.edu.cn
===========================
'''
              
              

textString 
              
                =
              
              
                "Harbin Institute of Technology"
              
              
insertPnt 
              
                =
              
               APoint
              
                (
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
height 
              
                =
              
              
                2.5
              
              
textObj 
              
                =
              
               acad
              
                .
              
              model
              
                .
              
              AddText
              
                (
              
              textString
              
                ,
              
               insertPnt
              
                ,
              
               height
              
                )
              
              
                # textString:文本内容;height:字高;
              
              
                # 系统默认对齐夹点位于文字基线左侧;
              
              
                # 采用系统默认对齐方式时,insertPnt为对齐夹点的位置坐标;
              
              
                # 当用户自定义对齐方式时,insertPnt以对齐方式中的为准。
              
            
          

(2) 对齐方式

            
              AlignNum 
              
                =
              
              
                7
              
              
textObj
              
                .
              
              Alignment 
              
                =
              
               AlignNum
          
              
                # AlignNum为对齐夹点位置标识号,其取值范围为[0,14];
              
              
                # 0 基线左对齐、1 基线居中对齐、2 基线右对齐;
              
              
                # 7 表示对齐夹点位于top cennter;
              
              
insertPnt 
              
                =
              
               APoint
              
                (
              
              
                0
              
              
                ,
              
              
                10
              
              
                )
              
              
textObj
              
                .
              
              TextAlignmentPoint 
              
                =
              
               insertPnt
          
              
                # 设置对齐夹点在图纸空间中的绝对位置,可为任意一已知点;
              
              
                # 若用户自定义对齐方式,则需设置此项。
              
            
          

(3) 文本缩放

            
              
                # 后续添加
              
            
          

4、文本样式

(1) 创建文字样式

            
              txtStyleObj 
              
                =
              
               acad
              
                .
              
              ActiveDocument
              
                .
              
              TextStyles
              
                .
              
              Add
              
                (
              
              
                "HIT_TxtStyle"
              
              
                )
              
            
          

(2) 将特定文字样式设为当前

            
              acad
              
                .
              
              ActiveDocument
              
                .
              
              ActiveTextStyle 
              
                =
              
               acad
              
                .
              
              ActiveDocument
              
                .
              
              TextStyles
              
                .
              
              Item
              
                (
              
              
                "Standard"
              
              
                )
              
            
          

(3) 设置字体

            
              
                ### ①、为当前文本样式设置字体
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              ActiveTextStyle
              
                .
              
              SetFont
              
                (
              
              
                "楷体"
              
              
                ,
              
              
                False
              
              
                ,
              
              
                False
              
              
                ,
              
              
                1
              
              
                ,
              
              
                0
              
              
                or
              
              
                0
              
              
                )
              
              
                # acad.ActiveDocument.ActiveTextStyle.SetFont(Typeface, Bold, Italic, charSet, PitchandFamily)
              
              
                # Typeface 字体名称;
              
              
                # Bold 加粗,布尔值,False为不加粗字体;
              
              
                # Italic 倾斜,布尔值,False为倾斜字体;
              
              
                # CharSet 字体字符集,1为默认字符集;
              
              
                # PitchAndFamily 字节及笔画形式。
              
              
                ### ②、为特定文本样式设置字体
              
            
          

(4) 设置字体倾斜角度

            
              
                # 后续添加
              
            
          

5、尺寸标准

(1) 线性及旋转线性标注

            
              
                import
              
               math
XLine1Point 
              
                =
              
               APoint
              
                (
              
              
                5
              
              
                ,
              
              
                25
              
              
                )
              
              
XLine2Point 
              
                =
              
               APoint
              
                (
              
              
                25
              
              
                ,
              
              
                35
              
              
                )
              
              
DimLineLocation 
              
                =
              
               APoint
              
                (
              
              
                10
              
              
                ,
              
              
                20
              
              
                )
              
              
RotationAngle 
              
                =
              
               math
              
                .
              
              radians
              
                (
              
              
                0
              
              
                )
              
              
dimRotObj 
              
                =
              
               acad
              
                .
              
              model
              
                .
              
              AddDimRotated
              
                (
              
              XLine1Point
              
                ,
              
               XLine2Point
              
                ,
              
               DimLineLocation
              
                ,
              
               RotationAngle
              
                )
              
              
                # XLine1Point 第一尺寸界线的起点;
              
              
                # XLine2Point 第二尺寸界线的起点;
              
              
                # DimLineLocation 尺寸线定位点,尺寸线或其延长线过该点;
              
              
                # RotationAngle 尺寸线与水平方向的夹角,去弧度制;
              
              
                # RotationAngle=0 水平标注,RotationAngle=90 竖直标注。
              
            
          

(2) 对齐标注

            
              ExtLine1Point 
              
                =
              
               APoint
              
                (
              
              
                5
              
              
                ,
              
              
                25
              
              
                )
              
              
ExtLine2Point 
              
                =
              
               APoint
              
                (
              
              
                25
              
              
                ,
              
              
                35
              
              
                )
              
              
TextPosition 
              
                =
              
               APoint
              
                (
              
              
                -
              
              
                5
              
              
                ,
              
              
                25
              
              
                )
              
              
dimAliObj 
              
                =
              
               acad
              
                .
              
              model
              
                .
              
              AddDimAligned
              
                (
              
              ExtLine1Point
              
                ,
              
               ExtLine2Point
              
                ,
              
               TextPosition
              
                )
              
              
                # ExtLine1Point 第一尺寸界线的起点;
              
              
                # ExtLine2Point 第二尺寸界线的起点;
              
              
                # TextPosition 尺寸线定位点,尺寸线或其延长线过该点。
              
              
                # dimObj.Update
              
            
          

(3) 角度标注

            
              AngleVertex 
              
                =
              
               APoint
              
                (
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
FirstEndPoint 
              
                =
              
               APoint
              
                (
              
              
                6
              
              
                ,
              
              
                8
              
              
                )
              
              
SecondEndPoint 
              
                =
              
               APoint
              
                (
              
              
                6
              
              
                ,
              
              
                -
              
              
                8
              
              
                )
              
              
TextPoint 
              
                =
              
               APoint
              
                (
              
              
                10
              
              
                ,
              
              
                10
              
              
                )
              
              
dimAngObj 
              
                =
              
               acad
              
                .
              
              model
              
                .
              
              AddDimAngular
              
                (
              
              AngleVertex
              
                ,
              
               FirstEndPoint
              
                ,
              
               SecondEndPoint
              
                ,
              
               TextPoint
              
                )
              
              
                # AngleVertex 角度顶点;
              
              
                # FirstEndPoint 第一尺寸界线端点;
              
              
                # SecondEndPoint 第二尺寸界线端点;
              
              
                # TextPoint 尺寸圆弧线定位点,即尺寸圆弧线过该点。
              
            
          

(4) 弧长标注

            
              ArcCenter 
              
                =
              
               APoint
              
                (
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
FirstEndPoint 
              
                =
              
               APoint
              
                (
              
              
                6
              
              
                ,
              
              
                8
              
              
                )
              
              
SecondEndPoint 
              
                =
              
               APoint
              
                (
              
              
                6
              
              
                ,
              
              
                -
              
              
                8
              
              
                )
              
              
ArcPoint 
              
                =
              
               APoint
              
                (
              
              
                20
              
              
                ,
              
              
                0
              
              
                )
              
              
dimArcObj 
              
                =
              
               acad
              
                .
              
              model
              
                .
              
              AddDimArc
              
                (
              
              ArcCenter
              
                ,
              
               FirstEndPoint
              
                ,
              
               SecondEndPoint
              
                ,
              
               ArcPoint
              
                )
              
              
                # ArcCenter 圆弧中心;
              
              
                # FirstEndPoint 第一尺寸界线端点;
              
              
                # SecondEndPoint 第二尺寸界线端点;
              
              
                # ArcPoint 尺寸圆弧线定位点,即尺寸圆弧线过该点。
              
            
          

(5) 直径及半径标注

            
              ChordPoint 
              
                =
              
               APoint
              
                (
              
              
                0
              
              
                ,
              
              
                10
              
              
                )
              
              
FarChordPoint 
              
                =
              
               APoint
              
                (
              
              
                0
              
              
                ,
              
              
                -
              
              
                10
              
              
                )
              
              
LeaderLength 
              
                =
              
              
                40
              
              
dimDiaObj 
              
                =
              
               acad
              
                .
              
              model
              
                .
              
              AddDimDiametric
              
                (
              
              ChordPoint
              
                ,
              
               FarChordPoint
              
                ,
              
               LeaderLength
              
                )
              
              
                # ChordPoint 圆任意一直径的端点;
              
              
                # FarChordPoint 直径的另一端点;
              
              
                # LeaderLength 引线长度,为点ChordPoint到标准文字定位夹点的距离;
              
              
                # 标注类型可在相应的系统变量如DIMUPT等中更改。
              
              
Center 
              
                =
              
               APoint
              
                (
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
ChordPoint 
              
                =
              
               APoint
              
                (
              
              
                10
              
              
                ,
              
              
                0
              
              
                )
              
              
LeaderLength 
              
                =
              
              
                10
              
              
dimRadObj 
              
                =
              
               acad
              
                .
              
              model
              
                .
              
              AddDimRadial
              
                (
              
              Center
              
                ,
              
               ChordPoint
              
                ,
              
               LeaderLength
              
                )
              
              
                # Center 被标注圆或圆弧的圆心
              
            
          

6、标注样式

(1) 创建新标注样式

            
              DimStyleObj 
              
                =
              
               acad
              
                .
              
              ActiveDocument
              
                .
              
              DimStyles
              
                .
              
              Add
              
                (
              
              
                "HIT_DimStyle"
              
              
                )
              
              
                print
              
              
                (
              
              dimAliObj
              
                .
              
              StyleName
              
                )
              
              
                # 打印标注对象的标准样式名称
              
              
                # 系统自带标注样式 ISO-25
              
            
          

(2) 将特定标注样式设为当前

            
              acad
              
                .
              
              ActiveDocument
              
                .
              
              ActiveDimStyle 
              
                =
              
               acad
              
                .
              
              ActiveDocument
              
                .
              
              DimStyles
              
                .
              
              Item
              
                (
              
              
                "HIT_DimStyle"
              
              
                )
              
            
          

(3) 设置尺寸线及尺寸界限

            
              
                '''
# 说明:以下即(3)~(6)的设置将生效为<样式替代>;
# 程序自动画图时<样式替代>不起作用,新添加的标注仍采用系统默认;
# 手动画图时<样式替代>起作用,新添加的标注<样式替代>;
# 设置永久标注样式见(7),后续添加详细代码;
# 标注样式替代是对当前标注样式中的指定设置所做的更改;
# 它与在不更改当前标注样式的情况下更改尺寸标注系统变量等效;
# 使用标注样式替代,无需更改当前标注样式便可临时更改标注系统变量。
'''
              
              
                ### ①、超出标记
              
              
                ### ②、基线间距
              
              
                ### ③、超出尺寸线
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMEXE"
              
              
                ,
              
              
                1.25
              
              
                )
              
              
                # 指定尺寸界线超出尺寸线的距离。
              
              
                ### ④、起点偏移量
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMEXO"
              
              
                ,
              
              
                0.625
              
              
                )
              
              
                # 设定自图形中定义标注的点到尺寸界线的偏移距离。
              
            
          

(4) 设置箭头

            
              
                ### ①、设定尺寸线箭头类型。
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMBLK"
              
              
                ,
              
              
                "_ARCHTICK"
              
              
                )
              
              
                # "_ARCHTICK"表示建筑标记
              
              
                ### ②、设定引线箭头。
              
              
                ### ③、尺寸线箭头大小
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMASZ"
              
              
                ,
              
              
                2.5
              
              
                )
              
            
          

(5) 设置标注文字

            
              
                ### ①、文字样式
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMTXSTY"
              
              
                ,
              
              
                "HIT_TxtStyle"
              
              
                )
              
              
                ### ②、文字高度
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMTXT"
              
              
                ,
              
              
                2.5
              
              
                )
              
              
                # 设定当前标注文字样式的高度;
              
              
                # 如果在此选项卡上指定的字样式具有固定的文字高度,则该高度将替代在此处设置的文字高度;
              
              
                # 如果要在此处设置标注文字的高度,请确保将文字样式的高度设置为 0。
              
              
                ### ③、文字位置
              
              

acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMTAD"
              
              
                ,
              
              
                1
              
              
                )
              
              
                # 控制标注文字相对尺寸线的垂直位置;
              
              
                # 0 表示标注文字在尺寸界线之间居中放置;
              
              
                # 1 表示将标注文字放置在尺寸线上方,从尺寸线到文字最低基线的距离为当前 DIMGAP 的值。
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMJUST"
              
              
                ,
              
              
                0
              
              
                )
              
              
                # 水平控制标注文字在尺寸线上相对于尺寸界线的水平位置;
              
              
                # 0 表示将文字置于尺寸线之上,并在尺寸界线之间置中对正。
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMGAP"
              
              
                ,
              
              
                0.625
              
              
                )
              
              
                # 设定文字相对尺寸线的位置。
              
              
                ### ④、文字对齐
              
              

acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMTIH"
              
              
                ,
              
              
                0
              
              
                )
              
              
                # 控制所有标注类型(坐标标注除外)的标注文字在尺寸界线内的位置;
              
              
                # 0 表示将文字与尺寸线对齐;
              
              
                # 1 表示水平绘制文字。
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMTOH"
              
              
                ,
              
              
                0
              
              
                )
              
              
                # 控制标注文字在尺寸界线外的位置。
              
            
          

(6) 设置主单位

            
              
                ### ①、线性标注精度
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMDEC"
              
              
                ,
              
              
                2
              
              
                )
              
              
                # 设定标注文字中的小数位数;
              
              
                # 2 表示显示小数点后三位;
              
              
                ### ②、小数分隔符
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMDSEP"
              
              
                ,
              
              
                "."
              
              
                )
              
              
                # "."表示小数分隔符,也可设置为","。
              
              
acad
              
                .
              
              ActiveDocument
              
                .
              
              SetVariable
              
                (
              
              
                "DIMADEC"
              
              
                ,
              
              
                -
              
              
                1
              
              
                )
              
              
                # 设置角度标注精度与线性标注精度相同
              
            
          

(7) 设置永久标注样式

            
              
                '''
略······ 
'''
              
            
          

7、多重引线

(1) 创建多重引线

            
              ArrowPnt 
              
                =
              
               APoint
              
                (
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
BaselinePnt 
              
                =
              
               APoint
              
                (
              
              
                10
              
              
                ,
              
              
                10
              
              
                )
              
              
PntsArray 
              
                =
              
               np
              
                .
              
              array
              
                (
              
              
                [
              
              ArrowPnt
              
                ,
              
               BaselinePnt
              
                ]
              
              
                )
              
              
PntsArray 
              
                =
              
               PntsArray
              
                .
              
              reshape
              
                (
              
              
                1
              
              
                ,
              
               PntsArray
              
                .
              
              shape
              
                [
              
              
                0
              
              
                ]
              
              
                *
              
               PntsArray
              
                .
              
              shape
              
                [
              
              
                1
              
              
                ]
              
              
                )
              
              
                [
              
              
                0
              
              
                ]
              
              
MLeaderObj 
              
                =
              
               acad
              
                .
              
              model
              
                .
              
              AddMLeader
              
                (
              
              PntsArray
              
                ,
              
              
                0
              
              
                )
              
              
                # ArrowPnt 箭头位置;
              
              
                # BaselinePnt 基线位置 ;
              
              
                # 1 表示多重引线的索引号,为正整数。
              
            
          

(2) 设置箭头大小

            
              MLeaderObj
              
                .
              
              ArrowheadSize 
              
                =
              
              
                2
              
              
                # 指箭头高度;
              
              
                # 此项将覆盖系统变量DIMASZ的值。
              
            
          

(3) 设置基线长度

            
              MLeaderObj
              
                .
              
              DoglegLength 
              
                =
              
              
                8
              
            
          

(4) 设置基线间隙

            
              MLeaderObj
              
                .
              
              LandingGap 
              
                =
              
              
                3
              
              
                # 基线端点到文字起点的距离
              
            
          

(5) 指定文字样式

            
              MLeaderObj
              
                .
              
              TextStyleName 
              
                =
              
              
                "HIT_TxtStyle"
              
            
          

(6) 指定文字内容

            
              MLeaderObj
              
                .
              
              TextString 
              
                =
              
              
                "HIT"
              
            
          

8、尾声

以上,便是一些关于 AutoCAD注释 的基本代码,因篇幅有限,某些非关键功能未做详细介绍,如有疑问,欢迎邮件来询。

本文部分功能的实现离不开广大博友的大力帮助,有些功能看似简单,但第一次实现出来却是相当不容易的。

鉴于,相关示例代码相对较少,特写本文,一方面是为自己的阶段性学习做一个总结,另一方面更是为有需要的人提供多一点参考。

如果您已实现一些本文未提及的功能,还请在评论区呈现,以便为后续学习者提供更多的帮助。

胸藏文墨怀若谷,腹有诗书气自华,希望各位都能在知识的pāo子里快乐徜徉。

因个人水平有限,文中难免有所疏漏,还请各位大神不吝批评指正。

最后,祝各位攻城狮们,珍爱生命,保护发际线!

本文部分内容,源于网络!

欢迎大家点赞、评论及转载,转载请注明出处!

为我打call,不如为我打款!

打赏可备注邮箱,本人会将上述代码发送给各位土豪!

Python AutoCAD 注释_第1张图片


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请请扫描上面二维码支持博主1元、2元、5元等您想捐的金额吧,狠狠点击下面给点支持吧

发表我的评论
最新评论 总共0条评论