Enter error message or question

SchluppIng
SchluppIng Member Posts: 22
10 Comments Name Dropper
**
edited February 14 in General Language Questions

Hi Ansys-Team,

I've a question about updating a progress bar, which I created with Windows Forms.
When I go through a nested loop, I try to update every 25% the progress bar, which works for the label I created in the progress bar ui, but the progessbar itself is behind. For example when I reach 25%, the label shows 25%, but the progress bar is at 0. When the label is updated to 50%, which works, the progress bar shows 25%. Is there a solution for this?

totalNodesToMove  = len(dataToMoveNodeList) * len(mesh.Nodes)
progressStep  = max(1, int(totalNodesToMove * 0.25))
nextProgressUpdate = progressStep
pb = ProgressBarForm.ProgressBarForm(100, path)
percent = 0
pb.Show()

with Transaction(True):
            i = 1
            for data in dataToMoveNodeList:
                for node in mesh.Nodes:
                    node_y = node.Y
                    #some other code

                    if i >= nextProgressUpdate:
                        percent = (i * 100) // totalNodesToMove
                        pb.update_progress(percent, "Circumferential")
                        #ExtAPI.Application.InvokeBackground(lambda p=percent: pb.update_progress(p, "Circumferential"))
                        nextProgressUpdate += progressStep
                        System.Windows.Forms.Application.DoEvents()
                    i += 1

                    #Go to next node if rm is more or less equal to new calculated radius. This should save a lot of time for node move.
                    if round(math.sqrt(math.pow(newX, 2) + math.pow(newZ, 2)), 4) == round(middle_radius, 4) or abs(fraction) <= 1e-12:
                        continue

                    newLocX = Quantity(newX * correctionScaling, "m")
                    newLocY = Quantity(node.Y * correctionScaling, "m")
                    newLocZ = Quantity(newZ * correctionScaling, "m")
                    nodeMove.MoveNode(node.Id, newLocX, newLocY, newLocZ)

Answers

  • James Derrick
    James Derrick Administrator, Employee Posts: 325
    Ancient Membership 100 Comments 100 Likes 25 Answers
    admin
    edited February 14

    Hello! Where did you get the ProgressBarForm object from? This isn't strictly about Ansys so I'm not sure how much we can help, but what I can say is when working with front-end stuff like this you often need to redraw windows to get dynamic updates. That is certainly true with matplotlib. Does this have a similar concept going on?

  • SchluppIng
    SchluppIng Member Posts: 22
    10 Comments Name Dropper
    **

    Hello,

    thanks for the answer. I got the ProgressBarForm from System.Windows.Forms and I did ProgressBar.Refresh() as well as Application.DoEvents().