Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/origin/main' into dogukaratas-M…
Browse files Browse the repository at this point in the history
…emberDefinableStiffness
  • Loading branch information
MichalO committed Apr 22, 2022
2 parents 768e457 + 835a2e4 commit 619daf7
Show file tree
Hide file tree
Showing 94 changed files with 1,627 additions and 1,200 deletions.
8 changes: 6 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"files.trimTrailingWhitespace": true,
"editor.tabSize": 4,
"editor.insertSpaces": true,
"python.linting.pylintEnabled": true,
"python.linting.pylintEnabled": false,
"python.linting.pylintArgs": [],
"python.linting.enabled": false,
"python.linting.pydocstyleEnabled": false,
Expand All @@ -23,5 +23,9 @@
"python.analysis.completeFunctionParens": true,
"python.disableInstallationCheck": true,
"python.linting.banditEnabled": true,
"python.languageServer": "Pylance"
"python.languageServer": "Pylance",
"python.analysis.diagnosticSeverityOverrides": {
"reportOptionalMemberAccess": "none",
"reportGeneralTypeIssues": "none",
}
}
2 changes: 0 additions & 2 deletions Examples/TrussGenerator_2D/TrussGenerator.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,6 @@
print('dirname: ', dirName)
sys.path.append(dirName + r'/../..')
from RFEM.enums import *
from RFEM.window import *
from RFEM.dataTypes import *
from RFEM.initModel import *
from RFEM.BasicObjects.material import *
from RFEM.BasicObjects.section import *
Expand Down
3 changes: 2 additions & 1 deletion Examples/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
)
sys.path.append(PROJECT_ROOT)
from RFEM.enums import NodalSupportType, StaticAnalysisType, LoadDirectionType, MemberLoadDistribution, MemberLoadDirection, MemberRotationSpecificationType
from RFEM.window import window
from Examples.window import window
from RFEM.dataTypes import inf
from RFEM.initModel import Model, Calculate_all, insertSpaces, modelLst
from RFEM.BasicObjects.material import Material
Expand Down Expand Up @@ -287,6 +287,7 @@ def main(hall_width_L, hall_height_h_o, hall_height_h_m, number_frames, frame_sp
# -------------------------------------------------------------
# Calculate all
Calculate_all()

print("Done")

if __name__ == '__main__':
Expand Down
326 changes: 163 additions & 163 deletions RFEM/window.py → Examples/window.py
Original file line number Diff line number Diff line change
@@ -1,163 +1,163 @@
from tkinter import Tk
from tkinter import ttk, Entry, Label, Button, Radiobutton, Checkbutton, CENTER, VERTICAL, INSERT, NORMAL, DISABLED, LEFT, W, IntVar, StringVar

def window(mainFunc, lstOfModels):
color = '#F2F3F4'
# Creating tkinter window
win = Tk()
win.resizable(False, False)
win.title('Power of automation with RFEM6')
win.geometry("550x280")

win.configure(bg=color)
win.grid_columnconfigure(index=0, minsize=140)
win.grid_columnconfigure(index=1, minsize=80)
win.grid_columnconfigure(index=2, minsize=80)
win.grid_columnconfigure(index=3, minsize=70)
win.grid_columnconfigure(index=4, minsize=120)

# Separators
y = 3
rh = 120 #0.76
ttk.Separator(win, orient=VERTICAL).place(x=140, y=y, height=rh)
ttk.Separator(win, orient=VERTICAL).place(x=260, y=y, height=rh)
ttk.Separator(win, orient=VERTICAL).place(x=350, y=y, height=rh)
ttk.Separator(win, orient=VERTICAL).place(x=430, y=y, height=rh)

Label(text="Params Type", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=0)
Label(text="Data Type", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=1)
Label(text="Symbol", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=2)
Label(text="Units", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=3)
Label(text="Magnitude", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=4)

Label(text="hall width", bg=color).grid(row=1, column=0)
Label(text="hall height", bg=color).grid(row=2, column=0)
Label(text="hall height", bg=color).grid(row=3, column=0)
Label(text="frame spacing", bg=color).grid(row=4, column=0)
Label(text="number of frames", bg=color).grid(row=5, column=0)
Label(text="Options", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=6, column=0)

Label(text="float", bg=color).grid(row=1, column=1)
Label(text="float", bg=color).grid(row=2, column=1)
Label(text="float", bg=color).grid(row=3, column=1)
Label(text="float", bg=color).grid(row=4, column=1)
Label(text="integer", bg=color).grid(row=5, column=1)

Label(text="L", bg=color).grid(row=1, column=2)
Label(text="h_o", bg=color).grid(row=2, column=2)
Label(text="h_m", bg=color).grid(row=3, column=2)
Label(text="f_s", bg=color).grid(row=4, column=2)
Label(text="n", bg=color).grid(row=5, column=2)

Label(text="meters", bg=color).grid(row=1, column=3)
Label(text="meters", bg=color).grid(row=2, column=3)
Label(text="meters", bg=color).grid(row=3, column=3)
Label(text="meters", bg=color).grid(row=4, column=3)
Label(text="-", bg=color).grid(row=5, column=3)

def validateAll(val): # 1 mandatory argument, not used
try:
float(e1.get())
float(e2.get())
float(e3.get())
float(e4.get())
int(e5.get())
button1['state']="normal"
return 1
except:
button1['state']="disabled"
print("disabled")
return 0

# Setting entry points
e1 = Entry(justify=CENTER, width=15) # (relief=FLAT, justify=CENTER, bg=color)
e1.grid(row=1, column=4)
e1.insert(INSERT, 20.0)
e2 = Entry(justify=CENTER, width=15)
e2.grid(row=2, column=4)
e2.insert(INSERT, 5.2)
e3 = Entry(justify=CENTER, width=15)
e3.grid(row=3, column=4)
e3.insert(INSERT, 7.3)
e4 = Entry(justify=CENTER, width=15)
e4.grid(row=4, column=4)
e4.insert(INSERT, 6.0)
e5 = Entry(justify=CENTER, width=15)
e5.grid(row=5, column=4)
e5.insert(INSERT, 6)


def start(val):
# hall_width_L, hall_height_h_o, hall_height_h_m, number_frames, frame_spacing, new_model, model_name, delete, delete_all
model_name = e6.get() if var1.get() else modeCombo.get()
mainFunc(float(e1.get()),float(e2.get()),float(e3.get()),int(e5.get()),float(e4.get()),var1.get(),model_name,int(var2.get()),int(var3.get()))
def close_window(val):
win.destroy()

# substitute for validatecommand and validation options of Entry (e1-e5)
e1.bind('<FocusOut>', validateAll)
e1.bind('<Key>', validateAll)
e2.bind('<FocusOut>', validateAll)
e2.bind('<Key>', validateAll)
e3.bind('<FocusOut>', validateAll)
e3.bind('<Key>', validateAll)
e4.bind('<FocusOut>', validateAll)
e4.bind('<Key>', validateAll)
e5.bind('<FocusOut>', validateAll)
e5.bind('<Key>', validateAll)

def selectRadioButton():
if var1.get()==1:
c2.config(state=DISABLED)
c3.config(state=DISABLED)
modeCombo.config(state=DISABLED)
e6.config(state=NORMAL)
else:
e6.config(state=DISABLED)
c2.config(state=NORMAL)
c3.config(state=NORMAL)
modeCombo.config(state=NORMAL)

# Radiobuttons
var1 = IntVar()
c1 = Radiobutton(win, text='create new model', variable=var1, value=1, command=selectRadioButton)
c1.grid(row=7, column=0, sticky=W)
c1.select()
c1 = Radiobutton(win, text='use existing model', variable=var1, value=0, command=selectRadioButton)
c1.grid(row=8, column=0, sticky=W)
c1.config(state=DISABLED)

# Textbox
e6 = Entry(justify=LEFT, width=19)
e6.grid(row=7, column=1)
e6.insert(INSERT, 'new_Model')

# Combobox
n = StringVar()
lst = []
modeCombo = ttk.Combobox(win, text='model', width=16, textvariable=n)
if lstOfModels:
c1.config(state=NORMAL)
for i in lstOfModels.name:
lst.append(i)
modeCombo['values'] = lst
modeCombo.current(0)
modeCombo.grid(row=8, column=1, sticky=W)

# Checkboxes
var2 = IntVar()
c2 = Checkbutton(win, text='delete results', state=DISABLED, variable=var2, onvalue=1, offvalue=0)
c2.grid(row=9, column=0, sticky=W)
var3 = IntVar()
c3 = Checkbutton(win, text='delete_all model', state=DISABLED, variable=var3, onvalue=1, offvalue=0)
c3.grid(row=10, column=0, sticky=W)

button1=Button(text='Run', anchor=CENTER, width=12, height=1, bg=color, state="normal") # width=16
button1.grid(row=11, column=4)
button1.bind('<ButtonRelease-1>', start)

button2=Button(text='Close', anchor=CENTER, width=12, height=1, bg=color, state="normal")
button2.grid(row=11, column=3)
button2.bind('<ButtonRelease-1>', close_window)

win.mainloop()
from tkinter import Tk
from tkinter import ttk, Entry, Label, Button, Radiobutton, Checkbutton, CENTER, VERTICAL, INSERT, NORMAL, DISABLED, LEFT, W, IntVar, StringVar

def window(mainFunc, lstOfModels):
color = '#F2F3F4'
# Creating tkinter window
win = Tk()
win.resizable(False, False)
win.title('Power of automation with RFEM6')
win.geometry("550x280")

win.configure(bg=color)
win.grid_columnconfigure(index=0, minsize=140)
win.grid_columnconfigure(index=1, minsize=80)
win.grid_columnconfigure(index=2, minsize=80)
win.grid_columnconfigure(index=3, minsize=70)
win.grid_columnconfigure(index=4, minsize=120)

# Separators
y = 3
rh = 120 #0.76
ttk.Separator(win, orient=VERTICAL).place(x=140, y=y, height=rh)
ttk.Separator(win, orient=VERTICAL).place(x=260, y=y, height=rh)
ttk.Separator(win, orient=VERTICAL).place(x=350, y=y, height=rh)
ttk.Separator(win, orient=VERTICAL).place(x=430, y=y, height=rh)

Label(text="Params Type", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=0)
Label(text="Data Type", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=1)
Label(text="Symbol", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=2)
Label(text="Units", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=3)
Label(text="Magnitude", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=0, column=4)

Label(text="hall width", bg=color).grid(row=1, column=0)
Label(text="hall height", bg=color).grid(row=2, column=0)
Label(text="hall height", bg=color).grid(row=3, column=0)
Label(text="frame spacing", bg=color).grid(row=4, column=0)
Label(text="number of frames", bg=color).grid(row=5, column=0)
Label(text="Options", justify=CENTER, font="Segoe 9 bold", bg=color).grid(row=6, column=0)

Label(text="float", bg=color).grid(row=1, column=1)
Label(text="float", bg=color).grid(row=2, column=1)
Label(text="float", bg=color).grid(row=3, column=1)
Label(text="float", bg=color).grid(row=4, column=1)
Label(text="integer", bg=color).grid(row=5, column=1)

Label(text="L", bg=color).grid(row=1, column=2)
Label(text="h_o", bg=color).grid(row=2, column=2)
Label(text="h_m", bg=color).grid(row=3, column=2)
Label(text="f_s", bg=color).grid(row=4, column=2)
Label(text="n", bg=color).grid(row=5, column=2)

Label(text="meters", bg=color).grid(row=1, column=3)
Label(text="meters", bg=color).grid(row=2, column=3)
Label(text="meters", bg=color).grid(row=3, column=3)
Label(text="meters", bg=color).grid(row=4, column=3)
Label(text="-", bg=color).grid(row=5, column=3)

def validateAll(val): # 1 mandatory argument, not used
try:
float(e1.get())
float(e2.get())
float(e3.get())
float(e4.get())
int(e5.get())
button1['state']="normal"
return 1
except:
button1['state']="disabled"
print("disabled")
return 0

# Setting entry points
e1 = Entry(justify=CENTER, width=15) # (relief=FLAT, justify=CENTER, bg=color)
e1.grid(row=1, column=4)
e1.insert(INSERT, 20.0)
e2 = Entry(justify=CENTER, width=15)
e2.grid(row=2, column=4)
e2.insert(INSERT, 5.2)
e3 = Entry(justify=CENTER, width=15)
e3.grid(row=3, column=4)
e3.insert(INSERT, 7.3)
e4 = Entry(justify=CENTER, width=15)
e4.grid(row=4, column=4)
e4.insert(INSERT, 6.0)
e5 = Entry(justify=CENTER, width=15)
e5.grid(row=5, column=4)
e5.insert(INSERT, 6)


def start(val):
# hall_width_L, hall_height_h_o, hall_height_h_m, number_frames, frame_spacing, new_model, model_name, delete, delete_all
model_name = e6.get() if var1.get() else modeCombo.get()
mainFunc(float(e1.get()),float(e2.get()),float(e3.get()),int(e5.get()),float(e4.get()),var1.get(),model_name,int(var2.get()),int(var3.get()))
def close_window(val):
win.destroy()

# substitute for validatecommand and validation options of Entry (e1-e5)
e1.bind('<FocusOut>', validateAll)
e1.bind('<Key>', validateAll)
e2.bind('<FocusOut>', validateAll)
e2.bind('<Key>', validateAll)
e3.bind('<FocusOut>', validateAll)
e3.bind('<Key>', validateAll)
e4.bind('<FocusOut>', validateAll)
e4.bind('<Key>', validateAll)
e5.bind('<FocusOut>', validateAll)
e5.bind('<Key>', validateAll)

def selectRadioButton():
if var1.get()==1:
c2.config(state=DISABLED)
c3.config(state=DISABLED)
modeCombo.config(state=DISABLED)
e6.config(state=NORMAL)
else:
e6.config(state=DISABLED)
c2.config(state=NORMAL)
c3.config(state=NORMAL)
modeCombo.config(state=NORMAL)

# Radiobuttons
var1 = IntVar()
c1 = Radiobutton(win, text='create new model', variable=var1, value=1, command=selectRadioButton)
c1.grid(row=7, column=0, sticky=W)
c1.select()
c1 = Radiobutton(win, text='use existing model', variable=var1, value=0, command=selectRadioButton)
c1.grid(row=8, column=0, sticky=W)
c1.config(state=DISABLED)

# Textbox
e6 = Entry(justify=LEFT, width=19)
e6.grid(row=7, column=1)
e6.insert(INSERT, 'new_Model')

# Combobox
n = StringVar()
lst = []
modeCombo = ttk.Combobox(win, text='model', width=16, textvariable=n)
if lstOfModels:
c1.config(state=NORMAL)
for i in lstOfModels.name:
lst.append(i)
modeCombo['values'] = lst
modeCombo.current(0)
modeCombo.grid(row=8, column=1, sticky=W)

# Checkboxes
var2 = IntVar()
c2 = Checkbutton(win, text='delete results', state=DISABLED, variable=var2, onvalue=1, offvalue=0)
c2.grid(row=9, column=0, sticky=W)
var3 = IntVar()
c3 = Checkbutton(win, text='delete_all model', state=DISABLED, variable=var3, onvalue=1, offvalue=0)
c3.grid(row=10, column=0, sticky=W)

button1=Button(text='Run', anchor=CENTER, width=12, height=1, bg=color, state="normal") # width=16
button1.grid(row=11, column=4)
button1.bind('<ButtonRelease-1>', start)

button2=Button(text='Close', anchor=CENTER, width=12, height=1, bg=color, state="normal")
button2.grid(row=11, column=3)
button2.bind('<ButtonRelease-1>', close_window)

win.mainloop()
Loading

0 comments on commit 619daf7

Please sign in to comment.