#python #autocad #zwcad
Вопрос:
Я работал над проектом по созданию инструмента, который помогает инженерам автоматизировать задачи рисования, и, поскольку моя компания использует ZWcad вместо Autocad, я был вынужден использовать pyzwcad, но я не смог найти достаточно информации об этом в одном месте или я не искал в правильных местах, так как я начинающий программист, и мне нужно собрать все данные, которые я собираю в одном месте.
Ответ №1:
прежде всего, вам нужно импортировать pyzwacad
from pyzwcad import *
или просто импортируйте используемые методы
from pyzwcad import ZwCAD, ZCAD, APoint, aDouble
мой предпочтительный способ автоматизации задач с помощью API-позволить пользователю запустить программу перед использованием инструмента.
итак, теперь нам нужно определить объект сапр
acad = ZwCAD()
в следующих параграфах я кратко опишу некоторые методы pyzwacad, которые я использую в своем проекте.
- Добавьте тип линии в текущий файл чертежа.
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")
- Нарисуйте квадрат:
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» относится к имени нужного объекта размерной линии.