Blog Links
一、连接及库导入
#!/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)
二、新建图层
LayerObj = acad.ActiveDocument.Layers.Add("HIT_Layer")
# 添加新图层,图层名称为"HIT_Layer"。
acad.ActiveDocument.ActiveLayer = LayerObj
# 将"HIT_Layer"图层设置为当前图层。
三、颜色设置
ClrNum = 1
LayerObj.color = ClrNum
# ClrNum为颜色索引号,其取值范围为[0,256];
# 标准颜色的颜色索引号指定如下::1 红、2 黄、3 绿、4 青、5 蓝、6 洋红、7 白/黑;
# 0 ByBlock、256 ByLayer;
# 其他颜色索引号见 https://wenku.baidu.com/view/9d458b70195f312b3069a505.html。
四、线型设置
acad.ActiveDocument.Linetypes.Load("ACAD_ISO08W100","acadiso.lin")
# 加载线型,"ACAD_ISO05W100"为线型名称,详细信息见CAD帮助文档;
# "acadiso.lin"为用于公制单位的线型定义文件,详细信息见CAD帮助文档;
# 为图层指定线型前,需先加载相关线型;
# 注意:不能重复加载,否则报错——'记录名重复';
# 可利用try...except...finally...机制,处理此类报错。
LayerObj.Linetype = "ACAD_ISO08W100"
# 设置图层线型;
# 指定线型前,若不想以Load方式加载线型,也可在CAD程序中点击线型>其他>加载,加载全部所用线型;
# 若既没采用Load方式也没有在CAD程序中手动加载线型,则程序会报错——'未找到主键'。
五、线宽设置
LayerObj.Lineweight = 13
# 13表示线宽为0.01mm的13倍,即0.13mm;
# 线宽值∈{0,5,9,13,15,18,20,25,30,35,40,50,53,60,70,80,90,100,106,120,140,158,200,211};
# 线宽值在上述集合中选取,含义为0.01mm的整数倍;其他数值非系统默认;
# 可以修改现有线宽,但不能添加或删除线宽,修改在CAD程序中进行。
六、批量创建
clrnums = [1, 2, 3]
# 图层颜色列表
layernames = ["HIT_图层_1", "HIT_图层_2", "HIT_图层_3"]
# 图层名称列表
try:
len(clrnums) == len(layernames)
except:
print("图层颜色号个数与图层个数不匹配")
layerobjs = [acad.ActiveDocument.Layers.Add(i) for i in layernames]
# 批量创建图层
for j in range(len(layerobjs)):
layerobjs[j].color = clrnums[j]
# 批量指定图层颜色
七、图层读取
layersnums = acad.ActiveDocument.Layers.count
# 当前文件模型空间中所包含的图层总数
layernames = [acad.ActiveDocument.Layers.Item(i).Name for i in range(layernums)]
# 当前文件模型空间中所包含的所有图层名称
index = layernames.index("HIT_图层_3")
# 获取指定图层索引号
acad.ActiveDocument.ActiveLayer = acad.ActiveDocument.Layers.Item(index)
# 将指定图层设定当前
八、尾声
以上,便是关于 AutoCAD 图层 的一些基本代码,因篇幅有限,某些非关键功能未做详细介绍,如有疑问,欢迎邮件来询。
本文部分功能的实现离不开广大博友的大力帮助,有些功能看似简单,但第一次实现出来却是相当不容易的。
鉴于,相关示例代码相对较少,特写本文,一方面是为自己的阶段性学习做一个总结,另一方面更是为有需要的人提供多一点参考。
如果您已实现一些本文未提及的功能,还请在评论区附上代码,以便为后续学习者提供更多的帮助。
胸藏文墨怀若谷,腹有诗书气自华,希望各位都能在知识的 pāo 子里快乐徜徉。
因本人野生学习 Python,水平确实有限,文中难免有所疏漏,还请各位大神不吝批评指正。
最后,祝各位攻城狮们,珍爱生命,保护发际线!
本文最早发表于 2018-12-13 18:20:21,作为博客 Python 二次开发 AutoCAD 简介 的一部分。
为了清晰直观,于 2019-07-20 14:16:23 单独创建本文。
本文部分内容,源于网络!
欢迎大家点赞、评论及转载,转载请注明出处!
为我打call,不如为我打款!
打赏可备注邮箱,本人将赠送本系列博客的全部 Python 源代码。