pyautocad
首部必须
#!/usr/bin/env python
# -*- coding: utf-8 -*-
导入pyautocad
import pyautocad
import re # 设置python的默认编码,只针对python2,python3不需要
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
# 打开cad文件
acad.ActiveDocument.Application.Documents.Open(path) 例子
acad.ActiveDocument.Application.Documents.Open(r"C:\Users\Administrator\Desktop\cad\南栅南冲口股份经济合作社-宴岗股份经济联合社土地权属界线核定书附图.dwg".decode("utf-8"))
# 新建cad文件
DrawingObj = acad.ActiveDocument.Application.Documents.Add("C:\Users\Administrator\Desktop\cad\南栅南冲.dwg")
# 连接及库导入
acad = Autocad( create_if_not_exists = True)
acad.ActiveDocument.Application.Documents.Open(r"C:\Users\Administrator\Desktop\cad\南栅南冲口股份经济合作社-宴岗股份经济联合社土地权属界线核定书附图.dwg".decode("utf-8")) print(acad.doc.Name) # 遍历cad文本,并且打印文本及点坐标,text.InsertionPoint[0]为y坐标,text.InsertionPoint[1]为x坐标,text.InsertionPoint为X,Y,Z元组
for text in acad.iter_objects('Text'):
# 如果遍历的文字包含 东莞市虎门镇,打印文本及点坐标
if re.findall(u"东莞市虎门镇",text.TextString):
print text.TextString,text.InsertionPoint[0] for text in acad.iter_objects('Line'):
# 遍历线,如果线颜色等于红色,text.layer打印线图层,text.color线的颜色,text.StartPoint线的开始点,text.EndPoint结束点
if text.color == 1:
print text.layer
print text.color
print text.StartPoint,text.EndPoint # 如果该线段是直线,打印线开始结束点
if text.StartPoint:
print text.StartPoint,text.EndPoint
# 否则可以判断为多段线,打印多段线端点
else:
print text.Coordiantes LayerObj = acad.ActiveDocument.Layers.Add("HIT_Layer1")
# 添加新图层,图层名称为"HIT_Layer"。y
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。
# 打印图层总数打印并打印每个图层名字
layers_nums = acad.ActiveDocument.Layers.count
# 当前文件模型空间中所包含的图层总数
print layers_nums
layers_names = [acad.ActiveDocument.Layers.Item(i).Name for i in range(layers_nums)]
# print layers_names
for i in layers_names:
# 遍历图层名字并打印
print i.decode("utf-8") # 批量创建图层
clr_num = [1, 2, 3]
# 图层颜色列表
layers_name = ["HIT_图层_1", "HIT_图层_2", "HIT_图层_3"]
# 图层名称列表
try:
len(clr_num) == len(layers_name)
except:
print("图层颜色号个数与图层个数不匹配")
layers_obj = [acad.ActiveDocument.Layers.Add(i) for i in layers_name]
# 批量创建图层
for j in range(len(layers_obj)):
layers_obj[j].color = clr_num[j]
# 批量指定图层颜色
# —— # cad另存为,路径必须为绝对路径,而且不能是中文
for i in range(100):
try:
acad.doc.SaveAs(r'D:\asf\vad\fw%s'%i,i)
time.sleep(1)
except:
continue # (2)、指定文件另存为
acad.ActiveDocument.Application.Documents("PyAutoCAD.dwg").SaveAs("D:\AutoCAD\PyAutoCAD_SaveAs", 61)
# 关闭已存在文件
acad.ActiveDocument.Application.Documents("PyAutoCAD.dwg").Close(True, "PyAutoCAD_已变更.dwg")
# 关闭PyAutoCAD.dwg文件。
# True 布尔值,为系统默认,表示打开文件后关闭前文件若发生变更,则保存变更,并另存为PyAutoCAD_已变更.dwg
# 此时文件夹中同时存在未变更的"PyAutoCAD.dwg"和已变更的"PyAutoCAD_已变更.dwg"
# 若第二项空缺,则新文件名为"PyAutoCAD.dwg",覆盖之前未变更的文件。
# 已知文件名设为当前
acad.ActiveDocument.Application.Documents("PyAutoCAD.dwg").Activate()
# 将PyAutoCAD.dwg设为当前文件。 未知文件名设为当前
DrawingObj.Activate()
# 将New_Drawing设为当前文件。 关闭新建文件
DrawingObj .Close(True, "HIT.dwg")
# 关闭New_Drawing文件。
# 文件夹中仅存在"HIT.dwg"一个文件。 关闭当前文件
acad.ActiveDocument.Close()
# 关闭当前文档。 # 打印包含指定文本的坐标,文本,坐标基点为文本左基点
for text in acad.iter_objects('Text'):
# print text.TextString, text.InsertionPoint
if re.findall(u"东莞市虎门镇",text.TextString):
# 分别打印文本,点,点Y,点X
print text.TextString,text.InsertionPoint,text.InsertionPoint[0],text.InsertionPoint[1] import re
text.ObjectName # 移动文本
for text in acad.iter_objects('Text'):
text.move(APoint(38467756.90809752, 2519896.6068465607), APoint(100, 100)
pyautocad的更多相关文章
- python操作cad
from pyautocad import Autocad # 自動連接上cad,只要cad是開着的,就創建了一個<pyautocad.api.Autocad> 對象.這個對象連接最近打開 ...
- 文件另存为——Autocad.doc.SaveAs
一.前言 使用pyautocad编辑好cad图纸后,往往涉及到一个保存的问题,但是官方文档并未提及,所以只能自己来了,测试了好久,终于是找到了保存的命令和参数说明. 二.方法介绍 Autocad.do ...
- Process Autocad by python
一.处理AutoCad模块 -pyautocad 1.安装 pip install pyautocad 注:1.该操作会自动安装 comtypes模块,如果其他方式安装,请自行安装comtypes模块 ...
- CAD
文件另存为——Autocad.doc.SaveAs 一.前言 使用pyautocad编辑好cad图纸后,往往涉及到一个保存的问题,但是官方文档并未提及,所以只能自己来了,测试了好久,终于是找到了保 ...
- 编程读写CAD文件验证
背景 B/S应用系统,根据用户上传数据:业务数据和CAD坐标数据,经过一系列运筹算法运算后,输出一批坐标数据,作为给用户的规划结果.此时需要方便直观的给用户展示坐标数据.可选方式有两个: web页面画 ...
随机推荐
- Pycharm有必要改的几个默认设置项
最近在用Pycharm学习Python的时候,总有两个地方感觉不是很舒服,比如调用方法的时候区分大小写(thread就不会出现Thread,string就不会出现String)等,这让我稍稍有点不舒服 ...
- The Way to Home CodeForces - 910A
4个月前做的一道题,当时不知道为什么,写了一个bfs,直接就超时了. 现在再看这个题目,发现就是一个简单的贪心,每次走最远即可. #include <bits/stdc++.h> usin ...
- PAT 基础编程题目集 6-7 统计某类完全平方数 (20 分)
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144.676等. 函数接口定义: int IsTheNumber ( const int N ); 其中 ...
- 指数函数在c语言实现
指数很重要,比如有一些欧拉公式 #include "common.h" #include <stdio.h> #include <stdlib.h> #in ...
- NPOI 生成Excel
private void btnSave_Click(object sender, EventArgs e) { ) != ".xls") { MessageBox.Show(&q ...
- 【E20200102-1】centos 7 下vsftp的安装和配置
一.准备工作 1.1.服务器准备 操作系统:centos 7.x 关闭防火墙(firewall/iptables)和SELinux 参见笔记<[E20200101-1]Centos 7.x 关闭 ...
- 【Unity|C#】基础篇(16)——文件读写(I/O类)
[笔记] 文件操作 File / FileInfo / FileStream https://www.runoob.com/csharp/csharp-file-io.html 文本读写 Stream ...
- DirectX11--HLSL语法入门
前言 编写本内容仅仅是为了完善当前的教程体系,入门级别的内容其实基本上都是千篇一律,仅有一些必要细节上的扩充.要入门HLSL,只是掌握入门语法,即便把HLSL的全部语法也吃透了也并不代表你就能着色器代 ...
- [Python]爬取CSDN论坛 标题 2020.2.8
首先新建一个Lei.txt 内容为: CloudComputingParentBlockchainTechnologyEnterpriseDotNETJavaWebDevelopVCVBDelphiB ...
- [CF1304C] Air Conditioner
维护一区间 \([l,r]\) 人按照时间升序 考虑 \((l_i, h_i, t_i)\),当前的所有区间与这个区间取交 推到 \(t_{i+1}\) 时,所有区间的端点向两边扩张即可 注意把空掉的 ...