我是编程的初学者。最近,我用python API远程控制了一个叫PLAXIS (岩土工程软件)的软件。并且在PLAXIS中有一些代码可以通过添加g_i来访问。在程序内部代码前面。例如,有一个内部程序代码:'Phase_8.ShouldCalculate = True‘。因此,在Python中,格式将是'g_i.Phase_8.ShouldCalculate = True‘。而且,我有10多个阶段。现在,我把代码中的每一个阶段都写出来了。我想知道有没有更优雅的方法呢?请原谅我糟糕的英语。
非常感谢!
我试着定义一个函数,但它不起作用。
####What I am doing now####
if k >= 1:
g_i.Phase_1.ShouldCalculate = True
if k >= 2:
g_i.Phase_2.ShouldCalculate = True
if k >= 3:
g_i.Phase_3.ShouldCalculate = True
if k >= 4:
g_i.Phase_4.ShouldCalculate = True
if k >= 5:
g_i.Phase_5.ShouldCalculate = True
if k >= 6:
g_i.Phase_6.ShouldCalculate = True
if k >= 7:
g_i.Phase_7.ShouldCalculate = True
if k >= 8:
g_i.Phase_8.ShouldCalculate = True
if k >= 9:
g_i.Phase_9.ShouldCalculate = True
if k >= 10:
g_i.Phase_10.ShouldCalculate \
= True
####The function that I defined####
def setactive(k):
g_i.Phase_(k).ShouldCalculate = True
for i in (1,k+1):
setactive(i)发布于 2019-01-23 01:43:15
因此,根据k的值,如果为N <= k,您似乎希望g_i.Phase_N.ShouldCalculate为真。
为了实现这一点,我会将各个阶段放在一个列表中,如下所示:
phases = [g_i.Phase_1, g_i.Phase_2, g_i.Phase_3,
g_i.Phase_4, g_i.Phase_5,] # add more yourself现在,您可以以phases[N-1]身份访问g_i.Phase_N (例如,phases[3]为g_i.Phase_4)。
所以,你要做的就是:
for i, phase in enumerate(phases):
if i <= k-1:
phase.ShouldCalculate = True
# maybe you also want this?
# else:
# phase.ShouldCalculate = False发布于 2019-01-26 04:24:35
只需使用以下循环进行迭代:
i=0
for ph in g_i.Phases:
if k>=i:
ph.ShowCalculate=True
i=i+1您还可以使用索引进行访问: ph= g_i.Phasesi,i是从0开始的整数(初始阶段)
在以编程方式创建计算阶段的情况下,您还可以生成阶段列表:
ListPhases=[]
NewPhase=g_i.Phases[0]
ListPhases.add(NewPhase)
PreviousPhase=NewPhase
NewPhase=g_i.phase(PreviousPhase)
ListPhases.add(NewPhase)然后,您就可以访问ListPhasesi了,因为它是所需的索引。你可以使用zvone的方法
我建议你好好看看参考手册的附件D(这是为Plaxis 2D准备的),因为它包含了很多初学者的例子。Plaxis网站上有一些使用VIP访问的信息
在Plaxis学院也有一些在线(非免费)培训,您也可以直接与Plaxis支持人员联系,以表明您的Plaxis VIP代码,通常响应速度相当快。
https://stackoverflow.com/questions/54313231
复制相似问题