1 引言
线段(line)是构成数值模拟最基本的要素【Plaxis使用Spyder替换默认编辑器SciTE的方法】,例如模型的几何形状、线性载荷、结构元等,因此灵活掌握线段的操作对于数值模拟具有重要意义。这个笔记讨论了使用绝对坐标和相对坐标生成线的操作原理,其目的是在不同软件之间进行数据交换【使用Python自动化Plaxis的命令流】。
line: 生成一条线(Creates a line)
linerelative: 使用相对坐标生成线(Creates lines using relative coordinates)
线段生成的高级用法lineangles不在本文的讨论之内。
2 g_i.line绝对坐标
当使用g_i.line命令产生出一条线段时,这个线段对象line_g是一个list,可以用type()函数和len()函数检查,共储存了3个对象,前两个是点(Point)的坐标, 最后一个是由两点组成的线(Line)。
line_g = g_i.line((2, 3), (4, 5))
由于Line对象本身也是一个list,因此需要使用loop取出两个点的坐标,代码如下所示:
line_g = g_i.line((2, 3), (4, 5))[-1]
for point in line_g:
x_c = point[0]
y_c = point[1]
print(x_c, y_c)
3 g_i.linerelative相对坐标
使用相对坐标生成线段的方法与使用绝对坐标g_i.line的生成方法一样,只不过使用的是g_i.linerelative函数。
point_g = g_i.point(2, 4)
line_g = g_i.linerelative(point_g, (6, 8))[-1]
for point in line_g:
x_c = point[0]
y_c = point[1]
y_c)
4 多义线的产生
当赋值多个坐标点时,line和linerelative可生成顺序连接的线段,类似于多义线(Polyline)。在这种情况下,产生的list首先存储各个点的坐标,然后存储各条线段,例如
line_g = g_i.line((2, 3), (4, 5), (6,7))
有5个对象,前3个是坐标点,后两个是线段,以此类推,如果有n的点,那么list的长度是2n-1。不过,linerelative产生的list与绝对坐标存储的对象不一样,它只存储新产生的坐标点,而不包含初始的坐标点,不太清楚它是故意这样做的,还是设计的缺陷遗漏了第一个点,个人觉得后者的可能性较大,我们将在后续的版本中检查这个特性。
point_g = g_i.point(2, 3)
res = g_i.linerelative(point_g, (6, 4), (1, 3))
lines_g = [item for item in res if item._plx_type == 'Line']
for line in lines_g:
for point in line:
x_c = point[0]
y_c = point[1]
print(x_c, y_c)