zoukankan      html  css  js  c++  java
  • 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:UsersAdministratorDesktopcad南栅南冲口股份经济合作社-宴岗股份经济联合社土地权属界线核定书附图.dwg".decode("utf-8"))
    

      


    # 新建cad文件
    DrawingObj = acad.ActiveDocument.Application.Documents.Add("C:UsersAdministratorDesktopcad南栅南冲.dwg")
    

      




    # 连接及库导入
    acad = Autocad( create_if_not_exists = True)
    acad.ActiveDocument.Application.Documents.Open(r"C:UsersAdministratorDesktopcad南栅南冲口股份经济合作社-宴岗股份经济联合社土地权属界线核定书附图.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:asfvadfw%s'%i,i)
    time.sleep(1)
    except:
    continue


    # (2)、指定文件另存为
    acad.ActiveDocument.Application.Documents("PyAutoCAD.dwg").SaveAs("D:AutoCADPyAutoCAD_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)
  • 相关阅读:
    Java-用switch判断季节
    鼠标放在菜单上下拉列表
    web自学网站
    JS与树本(复杂)
    简单滑动下拉列表
    匿名对象 构造方法 重载 构造代码块 this 关键字
    数组 面向对象 成员变量和局部变量额区别
    静态修饰符 权限修饰符 设计模式 面向对象
    面向对象、匿名对象、构造方法
    java的基础知识运算符
  • 原文地址:https://www.cnblogs.com/chargeworld/p/11919405.html
Copyright © 2011-2022 走看看