как использовать python libirary pyzwcad для автоматизации задач и рисования в ZWcad?

#python #autocad #zwcad

Вопрос:

Я работал над проектом по созданию инструмента, который помогает инженерам автоматизировать задачи рисования, и, поскольку моя компания использует ZWcad вместо Autocad, я был вынужден использовать pyzwcad, но я не смог найти достаточно информации об этом в одном месте или я не искал в правильных местах, так как я начинающий программист, и мне нужно собрать все данные, которые я собираю в одном месте.

Ответ №1:

прежде всего, вам нужно импортировать pyzwacad

 from pyzwcad import *
 

или просто импортируйте используемые методы

 from pyzwcad import ZwCAD, ZCAD, APoint, aDouble
 

мой предпочтительный способ автоматизации задач с помощью API-позволить пользователю запустить программу перед использованием инструмента.

итак, теперь нам нужно определить объект сапр

 acad = ZwCAD()
 

в следующих параграфах я кратко опишу некоторые методы pyzwacad, которые я использую в своем проекте.

  1. Добавьте тип линии в текущий файл чертежа.
     def G_add_line_typ(ltyp_name, acad):
        line_type_found = False
        for ltyp in acad.doc.Linetypes:
    
            if ltyp.name == ltyp_name:
                line_type_found = True
        if not line_type_found:
            acad.doc.Linetypes.Load(ltyp_name, "ZWCADiso.lin")
     
  2. Нарисуйте квадрат:

    X_coo: это координата X для центральной точки квадратной формы.

    y_coo: это координата Y для центральной точки квадратной формы.

    нам нужно создать массив/список для координат квадратных точек, например, первая точка займет первые две позиции в списке, поэтому

    список[0] — это первая координата точки X и

    список 1-это первая координата точки Y.

     def draw_sqr(acad, X_coo, y_coo, d, w, n_color):
        sqr_pts = [X_coo - (d / 2), y_coo   w / 2, X_coo - (d / 2), y_coo - w / 2, X_coo   (d / 2), y_coo - w / 2, X_coo   (d / 2), y_coo   w / 2, X_coo - (d / 2), y_coo   w / 2]
        sqr = acad.model.AddLightWeightPolyline(aDouble(sqr_pts))
        sqr.color = n_color
        # shape color is an integer from color index 1 for red.
     

введите описание изображения здесь

Ответ №2:

3 — Добавить круг:

 # add insertion point
x_coo = 50
y_coo = 50
c1 = APoint(x_coo, y_co)
radius = 500
circle= acad.model.AddCircle(c1, radius)
 

4 — Поворот объекта:

 # add base point
x_coo = 50
y_coo = 50
base_point= APoint(x_coo, y_co)
r_ang = (45 * np.pi) / 180
object.Rotate(base_point, r_ang)
# object is refering to the object name it could be difrent based on your code
 

5 — Добавить текст:

 # add insertion point
x_coo = 50
y_coo = 50
pttxt = APoint(x_coo, y_coo)
txt_height = 200 # text height
text = acad.model.AddText("text string", pttxt, txt_height)
 

6 — Измените выравнивание текста:

 # first we need to sort the current insertion point for the exist text object as it will be reset after changing the alignment.

old_insertion_point = APoint(text.InsertionPoint)
# text is refering to text object name it could be difrent based on your code


text.Alignment = ZCAD.zcAlignmentBottomCenter

# modify the text insertion point as the above step automaticaly reset it to (0, 0)
text.TextAlignmentPoint = old_insertion_point
 

7 — Добавить повернутую размерную линию:

нам нужно определить 3 пункта

начальная точка, конечная точка и размерная текстовая точка,также мы должны использовать математическую библиотеку для использования метода радианов

 import math
acad = ZwCAD()
st_dim = APoint(0, 0)

end_dim = APoint(100, 30)

text_dim = APoint(50, 15)

dim_line = acad.model.AddDimRotated(st_dim, end_dim, text_dim, math.radians(30))

acad.Application.ZoomAll()
 

приведенный выше код можно использовать для добавления линейной размерной линии, используя 0 в месте угла для горизонтального размера или математические радианы(90) для вертикальных размеров.

8 — Добавить выровненную размерную линию:

то же, что и выше, но без использования угла поворота.

 acad = ZwCAD()
st_dim = APoint(0, 0)

end_dim = APoint(100, 30)

text_dim = APoint(50, 15)

dim_line = acad.model.AddDIMALIGNED(st_dim, end_dim, text_dim)
 

9 — переопределение существующего текста размерной строки:

 dim_line.TextOverride = "new text"
 

«dim_line» относится к имени нужного объекта размерной линии.