职位:34
线程:14
加入时间:2021年10月
声誉:
0
2021年11月22日,晚上8点17分
(本文最后修改:11-22-2021,08:19 PM byaudreyv)。
我一直在使用python脚本生成曲线,并将其投射到一个表面上。
python脚本使用RoboDK API和曲线跟踪项目。由于某种原因,当我在RoboDK上运行程序时,它生成了曲线,但没有将曲线投影到表面上。它还说python脚本会继续运行,直到我手动选择停止才会停止。
当我把整个工作站发送给一个同事时,她工作得很好。我想知道这是否可能是RoboDK或Python的版本,或者是什么导致了这个问题。
帖子:1832
线程:2
加盟时间:2018年10月
声誉:
70
您使用的是最新版本的RoboDK吗?
“帮助”- >“关于”
最新版本为5.3.0(11月4日)或5.3.1(11月14日)
杰里米
职位:34
线程:14
加入时间:2021年10月
声誉:
0
我使用的是5.3.0,我的同事(他没有遇到这个问题)使用的是5.2.2。
职位:34
线程:14
加入时间:2021年10月
声誉:
0
我只是下载了5.2.2版本,脚本最终会投影曲线并自行停止。
帖子:1832
线程:2
加盟时间:2018年10月
声誉:
70
你能提供脚本吗?我会把它传给我们的开发团队。
杰里米
职位:34
线程:14
加入时间:2021年10月
声誉:
0
这个程序将创建点,并将这些点投影到窗口空白上;X,y坐标形成一个正弦波
#变量
# xx坐标,单位为mm
# y y坐标,单位为mm
# zz坐标,单位为mm
# y_steps点之间的y坐标增量
# x_steps x-
定义Make_Points(Point_Start, Point_End, Num_Points)
#找到起点
Point_List = []
[0] . x = Point_Start
y = Point_Start[1]
z = Point_Start[2]
计算每个连续路径点之间的距离
x_steps = (Point_End[0] - Point_Start[0])/(Num_Points - 1)
Point_i = [x,y,z]
Point_List = []
Point_List.append (point_i)
对于范围(2)中的r:
对于范围(49)中的I:
X += x_steps
Point_i = [x,y,z]
Point_List.append (point_i)
如果r == 1:
打破
Y += 30
Point_i = [x,y,z]
Point_List.append (point_i)
对于范围(49)中的I:
X -= x_steps
Point_i = [x,y,z]
Point_List.append (point_i)
Y += 30
Point_i = [x,y,z]
Point_List.append (point_i)
返回Point_List
* #导入robolink库
导入robodk机器人工具箱
从随机导入种子#只在需要时
从随机导入randint #只在需要时
#启动参数
Point_Start = [130.3,-616,117]
Point_End = [354.4,-616,117]
Num_Points = 50
#生成点,将用于创建正弦波路径
POINTS = Make_Points(Point_Start, Point_End, Num_Points)
打开与模拟器的通信
RDK = Robolink()
#关闭自动渲染
RDK.Render(假)
#自动删除之前生成的项目(自动标记)
list_items = RDK.ItemList()
对于list_items中的item:
如果item.Name () .startswith(汽车的):
item.Delete ()
#在开始模拟之前打开渲染
RDK.Render(真正的)
object_curve = RDK.AddCurve(POINTS)
ProjectionType = projection_nearest
#可用值包括:
#PROJECTION_NONE = 0 #没有曲线投影
# projection_nearest = 1 #投影将是表面上最近的点
#投影将沿着法线进行。
#投影将沿着法线进行。并根据表面法线重新计算法线。
#PROJECTION_CLOSEST_RECALC = 4 #投影将是表面上最近的点,法线将重新计算
#PROJECTION_RECALC = 5 #法线根据最近投影的表面法线重新计算
#-------------------------------------------------------------
#要求用户为对象提供特性
object_features = RDK。选择具有投影特征的对象(曲线和/或点),ITEM_TYPE_OBJECT
如果不是object_features.Valid():
辞职()
#要求用户提供对象的表面作为参考
object_surface = RDK。ItemUserPick("Select Surface Object to project features", ITEM_TYPE_OBJECT)
如果不是object_surface.Valid():
辞职()
#创建一个surface对象的副本
object_surface.Copy ()
new_object = RDK.Paste(object_surface.Parent())
new_object。setName(“重新计算法线”)
new_object.setVisible(真正的)
#隐藏用于创建所需曲线的新对象的对象
object_features.setVisible(假)
object_surface.setVisible(假)
#关闭渲染(更快)
RDK.Render(假)
添加所有曲线,按需要投影(遍历所有曲线,直到找不到曲线为止)
Curve_points, name_feature = object_features。GetPoints (FEATURE_CURVE, 0)
打印(name_feature)
curve_points_proj = RDK。ProjectPoints(curve_points, object_surface, ProjectionType)
RDK。添加曲线(curve_points_proj, new_object, True, PROJECTION_NONE)
#打开渲染(可选)
RDK.Render(真正的)
打印(“完成”)
path_settings = RDK。AddMillingProject(“AutoCurveFollow设置”)
setmillingparameters (part=new_object)
这是我一直用来在一个表面上投影路径的脚本。
下载5.2.2并运行此脚本后,它正常工作。对于5.3.0版本,它不起作用。
帖子:1832
线程:2
加盟时间:2018年10月
声誉:
70
你好,
您是否还可以添加一个小的.rdk文件,以便我们测试脚本?
顺便说一下,你可以将脚本附加为.py文件。
当你选择“新回复”时,你可以按“选择文件”再按“添加附件”。
杰里米
职位:34
线程:14
加入时间:2021年10月
声誉:
0
2021年11月23日,晚上10:42
(这篇文章最后修改:11-23-2021,晚上10:43由audreyv)。
附件是一个测试站以及python脚本的.py文件。
下面是python脚本