from pyautocad import Autocad

# 自動連接上cad,只要cad是開着的,就創建了一個<pyautocad.api.Autocad> 對象。這個對象連接最近打開的cad文件。
# 如果此時還沒有打開cad,將會創建一個新的dwg文件,並自動開啓cad軟件
acad = Autocad(create_if_not_exists=True)
acad.prompt("Hello, Autocad from Python")# acad.prompt() 用來在cad控制台中打印文字
print (acad.doc.Name) # acad.doc.Name儲存着cad最近打開的圖形名

运行结果:

Hello, Autocad from Python
Drawing2.dwg

from pyautocad import Autocad

# 自動連接上cad,只要cad是開着的,就創建了一個<pyautocad.api.Autocad> 對象。這個對象連接最近打開的cad文件。
# 如果此時還沒有打開cad,將會創建一個新的dwg文件,並自動開啓cad軟件
acad = Autocad(create_if_not_exists=True)
acad.prompt("Hello, Autocad from Python")# acad.prompt() 用來在cad控制台中打印文字
print (acad.doc.Name) # acad.doc.Name儲存着cad最近打開的圖形名 #導入APoint類是非常必要的,畫圖都是靠點來畫,而且CAD中所有的點都必須用APoint類進行包裹。APoint(10,30),
# 其中10代表點的x座標,30代表點的y座標。
from pyautocad import APoint
import math
acad.model.AddLine(p1,p2) # 畫直線,p1是畫線的第一個點,p2是第二個點
text = acad.model.AddText("{0}".format(text), p, 15) # 添加文本,第一個參數就是添加的文本字符串,第二p是被APoint類包裹的點,也就是說在哪個座標下顯示文本,15是文本字體大小
text.move(p1, p2) # 文本從p1點移動到p2點
acad.model.AddCircle(p, 10) # 畫圓,第一個參數p就是APoint類包裹的點,也就是圓心位置,第二參數10是半徑大小
acad.model.AddArc(p, radius, math.radians(90), math.radians(270)) # 畫圓弧,第一個參數是在哪個點畫圓弧,第二個參數是半徑,第三個是開始弧(弧度制,不是角度制),第四個點是結束弧。
# 保存cad圖到指定位置,第一個參數一定是保存的絕對路徑!!,64是保存的一種格式,筆者從1到100都試了一遍,
# 有一些是可以生成圖的,都是CAD可以打開的文件類型格式。其實跟着筆者寫64就好!
acad.doc.SaveAs("{0}".format('cadtest.dwg'), 64)

上面这个例子不可以运行,因为没有初始化点的坐标。

from pyautocad import Autocad, APoint
acad = Autocad(create_if_not_exists=True)
acad.prompt("Hello, Autocad from Python\n")
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 dp = 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) + dp for obj in acad.iter_objects(['Circle', 'Line']):
print(obj.ObjectName)

运行结果:

C:\Users\Qin\AppData\Local\Programs\Python\Python36\python.exe D:/statistics_chenqichao/20180313同济大学嘉定校区/parse1/wuyong_2.py
Hello, Autocad from Python

Drawing3.dwg
text: Hi 0! at: (0.0, 0.0, 0.0)
text: Hi 1! at: (0.0, 10.0, 0.0)
text: Hi 2! at: (0.0, 20.0, 0.0)
text: Hi 3! at: (0.0, 30.0, 0.0)
text: Hi 4! at: (0.0, 40.0, 0.0)
AcDbLine
AcDbCircle
AcDbLine
AcDbCircle
AcDbLine
AcDbCircle
AcDbLine
AcDbCircle
AcDbLine
AcDbCircle

Process finished with exit code 0

from pyautocad import Autocad, APoint
acad = Autocad(create_if_not_exists=True)
for item in acad.iter_objects("PolyLine"):
print(item.Coordinates)

上面的代码提取多段线的各顶点坐标。

https://www.smwenku.com/a/5bc0b8b62b717711c923e688/


python操作cad的更多相关文章

  1. 转载 Python 操作 MySQL 的正确姿势 - 琉璃块

    Python 操作 MySQL 的正确姿势 收录待用,修改转载已取得腾讯云授权 作者 |邵建永 编辑 | 顾乡 使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能 ...

  2. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  3. Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  4. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  5. Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  6. Python操作Mysql之基本操作

    pymysql python操作mysql依赖pymysql这个模块 下载安装 pip3 install pymysql 操作mysql python操作mysql的时候,是通过”游标”来进行操作的. ...

  7. Python操作RabbitMQ

    RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消 ...

  8. python操作日期和时间的方法

    不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法.1.将字符串的时间转换为时间戳 ...

  9. Python—操作redis

    Python操作redis 连接方式:点击 1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建, ...

随机推荐

  1. Tomcat 性能监控及调优

    1.性能监控 方式1: /usr/local/tomcat7/conf/tomcat-users.xml 添加如下: <role rolename="manager-gui" ...

  2. 版本号控制软件:TortoiseSVN高速上手

    百度百科对于SVN的一点解释: TortoiseSVN是Subversion版本号控制系统的一个免费开源client,能够超越时间的管理文件和文件夹.文件保存在中央版本号库,除了能记住文件和文件夹的每 ...

  3. Kali Linux 1.0 新手折腾笔记(2013.3.21更新)

    rootoorotor昨天折腾了 Kali Linux 1.0,把大概的配置过程记录下来,希望对想接触或使用Kali Linux的同学有所帮助. 请注意: 1.本文为面向新手的教程,没技术含量,没事瞎 ...

  4. HDU 5301(Buildings-贪心构造)

    Buildings Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota ...

  5. MySQL具体解释(14)----------事务处理

    前言:前一篇文章关于事务处理的博文没有写清楚,读起来非常晦涩.非常难理解,所以有整理了一些资料,帮助理解.见谅! 关于MySQL事务处理学习记 START TRANSACTION COMMIT ROL ...

  6. UNP学习笔记(第十三章 守护进程和inetd超级服务器)

    关于守护进程可以查看apue的笔记 http://www.cnblogs.com/runnyu/p/4645046.html daemon_init函数 下面给出名为daemon_init函数,通过调 ...

  7. [ 转]C++ 虚函数表解析

    http://blog.csdn.net/haoel/article/details/1948051 前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子 ...

  8. INSTALL_FAILED_UID_CHANGED解决的方法

    近期开发过程中又遇到了这个问题,最终找到了一个比較好的解决的方法.在此记录下. 打开手机或者pad中的设置----->安全----->未知来源(同意安装非安卓市场应用程序). 把这个取消, ...

  9. Linux系统运维之路

    九月份开始,半年内搞定运维,博客会慢慢的更新,vim编辑器,Nginx配置文件优化 运维基础 运维基础-Linux发展史.安装.基本操作 运维基础-用户和组管理 运维基础-文件权限管理 运维基础-进程 ...

  10. java提高同步锁的几点建议

    1.减少锁的持有时间,只对关键的代码块加锁,减少synchronized锁内部的无关模块: 2.减小锁粒度,如Collections.synchronizedMap(map)返回线程安全的map会锁整 ...