zoukankan      html  css  js  c++  java
  • python操作cad

    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
    ")
    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:UsersQinAppDataLocalProgramsPythonPython36python.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中字典排序,列表中的字典排序
    Python模块:operator简单介绍
    java 物理资源回收 finally与try
    Eclipse相对路径
    java Lambda
    java 匿名内部类
    java File类
    java单例类
    java 创建子类
    jvm运行时数据区域
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/10081319.html
Copyright © 2011-2022 走看看