如何使用python库zwcad在ZWcad中自动执行任务和绘图?
how to use python libirary pyzwcad to automate tasks and draw in ZWcad?
我正在做一个项目来创建一个工具来帮助工程师自动化绘图任务,因为我的公司使用 ZWcad 而不是 Autocad,我发现自己不得不使用 pyzwcad 但我无法在一个地方找到足够的信息或者我没有在正确的地方搜索,因为我是一名初级程序员,我需要在一个地方收集我收集的所有数据。
首先你需要导入pyzwacad
from pyzwcad import *
或者只导入使用过的方法
from pyzwcad import ZwCAD, ZCAD, APoint, aDouble
我使用 API 自动执行任务的首选方法是让用户在使用该工具之前启动程序。
所以我们现在需要定义 cad 对象
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坐标。
我们需要为方形点创建一个 array/list 坐标,例如第一个点将占据列表中的前两个位置,所以
list[0]为第一个点X坐标,
list1为第一个点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.
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 或在垂直尺寸的角度位置使用 math.radians(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" 指的是想要的尺寸线对象名称。
我正在做一个项目来创建一个工具来帮助工程师自动化绘图任务,因为我的公司使用 ZWcad 而不是 Autocad,我发现自己不得不使用 pyzwcad 但我无法在一个地方找到足够的信息或者我没有在正确的地方搜索,因为我是一名初级程序员,我需要在一个地方收集我收集的所有数据。
首先你需要导入pyzwacad
from pyzwcad import *
或者只导入使用过的方法
from pyzwcad import ZwCAD, ZCAD, APoint, aDouble
我使用 API 自动执行任务的首选方法是让用户在使用该工具之前启动程序。
所以我们现在需要定义 cad 对象
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坐标。
我们需要为方形点创建一个 array/list 坐标,例如第一个点将占据列表中的前两个位置,所以
list[0]为第一个点X坐标,
list1为第一个点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.
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 或在垂直尺寸的角度位置使用 math.radians(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" 指的是想要的尺寸线对象名称。