首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python的PLAXIS API

使用Python的PLAXIS API
EN

Stack Overflow用户
提问于 2019-01-23 01:09:20
回答 2查看 944关注 0票数 1

我是编程的初学者。最近,我用python API远程控制了一个叫PLAXIS (岩土工程软件)的软件。并且在PLAXIS中有一些代码可以通过添加g_i来访问。在程序内部代码前面。例如,有一个内部程序代码:'Phase_8.ShouldCalculate = True‘。因此,在Python中,格式将是'g_i.Phase_8.ShouldCalculate = True‘。而且,我有10多个阶段。现在,我把代码中的每一个阶段都写出来了。我想知道有没有更优雅的方法呢?请原谅我糟糕的英语。

非常感谢!

我试着定义一个函数,但它不起作用。

代码语言:javascript
复制
####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)
EN

回答 2

Stack Overflow用户

发布于 2019-01-23 01:43:15

因此,根据k的值,如果为N <= k,您似乎希望g_i.Phase_N.ShouldCalculate为真。

为了实现这一点,我会将各个阶段放在一个列表中,如下所示:

代码语言:javascript
复制
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)。

所以,你要做的就是:

代码语言:javascript
复制
for i, phase in enumerate(phases):
    if i <= k-1:
        phase.ShouldCalculate = True

    # maybe you also want this?
    # else: 
    #     phase.ShouldCalculate = False
票数 0
EN

Stack Overflow用户

发布于 2019-01-26 04:24:35

只需使用以下循环进行迭代:

代码语言:javascript
复制
i=0

for ph in g_i.Phases:
   if k>=i:
     ph.ShowCalculate=True
   i=i+1

您还可以使用索引进行访问: ph= g_i.Phasesi,i是从0开始的整数(初始阶段)

在以编程方式创建计算阶段的情况下,您还可以生成阶段列表:

代码语言:javascript
复制
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代码,通常响应速度相当快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54313231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档