引言

利用python实现自动绘制CAD图。对于好久没有触碰autoCAD的笔者来说,利用python实现自动操作autoCAD,学会使用pyautocad库的同时,也想好好把autoCAD的基本使用操作重新捡起来学习,所以这篇博客记录pyautocad库的使用方法的同时也会附带autoCAD的相关用法。

1 模块与软件安装

1.1 pyautocad库

看过笔者前面博客的应该知道,笔者尤其钟爱在虚拟环境进行相关环境的搭建,这里也不例外:

pip install --upgrade pyautocad -i https://pypi.douban.com/simple

如下图所示,关键模块已安装完毕:(目前最新版本为:pyautocad-0.2.0)

1.2autoCAD软件安装

目前autoCAD已经更新到2020了,但笔者担心太新的版本存在文件的不兼容性(不知道是不是担心过多了),于是笔者折中选择了2014版本的autoCAD,尽量安装在非系统盘上,如笔者选择安装在D盘上。(详细安装这里不展开说明)
链接:https://pan.baidu.com/s/1lOsY6f3k9iCzQQa7bKHv1g
提取码:uz8v

2 pyautocad基本使用

在使用pyautocad进行cad自动绘图前,必须先打开autoCAD,否则会报如下错误:

"""
说明:
# 1 导入APoint类是非常必要的,画图都是靠点来画,而且CAD中所有的点都必须用APoint类进行包裹。APoint(10,30),
# 其中10代表点的x坐标,30代表点的y坐标。# 2 导入相关模块
from pyautocad import APoint, APoint
import math# 3 画直线,p1是画线的第一个点,p2是第二个点
acad.model.AddLine(p1,p2)# 4 添加文本,第一个参数就是添加的文本字符串,第二p是被APoint类包裹的点,也就是说在哪个坐标下显示文本,15是文本字体大小
text = acad.model.AddText("{0}".format(text), p, 15)
# 文本从p1点移动到p2点
text.move(p1, p2)# 5 画圆,第一个参数p就是APoint类包裹的点,也就是圆心位置,第二参数10是半径大小
acad.model.AddCircle(p, 10)# 6 画圆弧,第一个参数是在哪个点画圆弧,第二个参数是半径,第三个是开始弧(弧度制,不是角度制),第四个点是结束弧。
acad.model.AddArc(p, radius, math.radians(90), math.radians(270))# 7 保存cad图到指定位置,第一个参数一定是保存的绝对路径!!,64是保存的一种格式,笔者从1到100都试了一遍,有一些是可以生成图的,都是CAD可以打开的文件类型格式。其实跟着笔者写64就好!
acad.doc.SaveAs("{0}".format(save_path), 64)
"""

实例

from pyautocad import Autocad, APoint
import re
import math# 打开cad文件
# 自动连接上cad,只要cad是开着的,就创建了一个<pyautocad.api.Autocad> 对象。这个对象连接最近打开的cad文件。
# 如果此时还没有打开cad,将会创建一个新的dwg文件,并自动开启cad软件
acad = Autocad(create_if_not_exists=True)
# acad.prompt() 用来在cad控制台中打印文字
acad.prompt("Hello, Autocad from Python")
# acad.doc.Name储存着cad最近打开的图形名
print(acad.doc.Name)p1 = APoint(0, 0)
p2 = APoint(50, 25)
for i in range(5):text = acad.model.AddText('Hi %s!' % i, p1, 2.5)acad.model.AddLine(p1, p2)  # 画线:指定起点和终点acad.model.AddCircle(p1, 10)  # 指定圆心;半径p1.y += 10  # P1的y坐标累加10dp = APoint(10, 0)
# !!!!!!!遍历cad图形对象以及访问/修改对象属性
for text in acad.iter_objects('Text'):print('text: %s at: %s' % (text.TextString, text.InsertionPoint))text.InsertionPoint = APoint(text.InsertionPoint) + dpfor obj in acad.iter_objects(['Circle', 'Line']):print(obj.ObjectName)

绘图结果如下:

3 AutoCAD的基础知识和基本操作

AutoCAD是由美国Autodesk公司开发的通用计算机辅助设计(Computer Aided Design, CAD)软件,具有易于掌控、使用方便、体系结构开放等优点,能够绘制二维图形与三维图形、标注尺寸、渲染图形以及打印输入图纸,目前已广泛应用于机械、建筑、电子、航天、造船、土木工程等领域。

基本功能有:

  1. 绘制和编辑图形
  2. 标注图形尺寸
  3. 渲染三维图形
  4. 数据库管理功能
  5. Internet功能
  6. 输出和打印图形

推荐链接:https://wenku.baidu.com/view/821d25c1a1116c175f0e7cd184254b35effd1a42.html

【Python】自动操作Autocad的pyautocad库(一)相关推荐

  1. python开发autocad_利用Python自动化操作AutoCAD的实现

    1 Python自动绘图 在这里我主要运用了pyautocad库进行AutoCAD的自动化操作,pyautocad是一款功能非常强大的AutoCAD操作处理库,可以实现Python自动绘图.CAD图像 ...

  2. python用于cad_【笔记】利用Python自动化操作AutoCAD

    1 Python自动绘图 在这里我主要运用了pyautocad库进行AutoCAD的自动化操作,pyautocad是一款功能非常强大的AutoCAD操作处理库,可以实现Python自动绘图.CAD图像 ...

  3. python操作autocad_【笔记】利用Python自动化操作AutoCAD

    1 Python自动绘图 在这里我主要运用了pyautocad库进行AutoCAD的自动化操作,pyautocad是一款功能非常强大的AutoCAD操作处理库,可以实现Python自动绘图.CAD图像 ...

  4. python提取cad坐标到excel_使用python来操作autocad,并且将坐标点转换成cad可见对象...

    由于工作需要,在项目中遇到一个棘手的问题,如何将(mssql)数据库中的BLOB文件转成cad可见图形 (可能每个项目需求不一样,解决方式不同) 第一步 . 需要转换的图形类型 第二步 . 那我们先查 ...

  5. Python自动操作GUI神器PyAutoGUI

    日常使用计算机,命令行程序可以说是为批量操作文件而生,但作为普通用户,最多的还是通过鼠标键盘操作形形色色的图形界面程序.试想下面一个场景:有成千上万个文件,都需要通过图形界面进行同样的一套编辑.保存工 ...

  6. 使用python来操作autocad,并且将坐标点转换成cad可见对象

    由于工作需要,在项目中遇到一个棘手的问题,如何将(mssql)数据库中的BLOB文件转成cad可见图形 (可能每个项目需求不一样,解决方式不同) 第一步 . 需要转换的图形类型 第二步 . 那我们先查 ...

  7. python自动操作微信_微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答...

    原标题:微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答 本文为微信智能回复相关python项目,通过模拟网页端微信接口,实现跟好友之间自动的回复,并接入了图灵智能库,进行相应的内容 ...

  8. Python 读写操作Excel —— 安装第三方库(xlrd、xlwt、xlutils、openpyxl)

    数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件.因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道. 如果仅仅是要以表单形式保存数据,可以借助 ...

  9. python自动操作微信_Python+Appium 自动化操作微信入门看这一篇就够了

    简介 Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.PHP 等多种语言. Appium 封装了 Selenium,能够为用户提 ...

最新文章

  1. testNG安装一直失败解决方法
  2. php for循环可以变量关联数组,数组字符串变量之间的转换,数组元素的回调,for循环遍历关联数组...
  3. 【画出漂亮的电路图】CircuiTikZ库学习第一天
  4. matlab plot title 包含变量的图片标题
  5. cdoj 1150 排名表 拓扑排序
  6. Linux如何进行GPIO读写操作的?
  7. mysql数据库版本不同_MySQL不同版本数据同步
  8. QApplication
  9. cmd长ping记录日志和时间_Ping记录时间的方法
  10. Objective-C 与 C++ 的区别
  11. 优思学院|精益六西格玛中的8大浪费是什么?
  12. 舵机的相关原理与控制原理
  13. 广东百望税控盘初始化设置
  14. 2020 春节买火车票攻略和抢票工具分享
  15. Image Retrieval using Scene Graphs ——基于场景图的图像检索 读书笔记
  16. HKEY_CLASSES_ROOT/Applications
  17. 小 V 视频号下载工具(可下载所有视频号中的视频+公众号中的部分视频、音频)
  18. 数码博主自用五款高性价比蓝牙耳机分享,双11不想踩雷选什么蓝牙耳机好?
  19. 推荐系统 --- 推荐算法 --- 基于用户行为的推荐算法 - 协同过滤算法
  20. STM32L系列简介

热门文章

  1. JavaScript实现简单的双向数据绑定(Ember、Angular、Vue)
  2. 观察者模式C++实现
  3. Matlab中ind2gray函数用法
  4. setVisibility()设置过度动画
  5. IDEA3.5最新版激活码
  6. NAS服务器有哪些优势
  7. Ubuntu下U盘没有不能新建粘贴文件 报错 [sdf] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
  8. 50个热门语义分割数据集免费、高速下载资源分享,涵盖通用视觉、遥感、自动驾驶、医疗等多种场景题
  9. 查询每个学生的总成绩的各个科目的分数和姓名,按总成绩排序
  10. 话机按键音效——DTMF生成