Dear All,
I am trying to obtain the reaction forces/support forces in the Z direction for only columns. As the model was created in 3D, no springs were defined and I have only 25000 nodes to work with.
Upon examining the sofistik graphic, I noticed that the nodes at columns are represented as numbers of Fixed Nodes
, as shown in the attached image.
To access them using the Python interface in CDB, I came across KFIX in this SOFiSTiK forum post and tried the provided Python code. The output I am receiving is in string format, for example:
- 1147 - “PZ”
- 127 - “”
- 88 - “PPMZ”
However, I am unsure how this information will assist me in filtering the nodes. If anyone has any thoughts on this issue, please let me know.
ie = c_int(0)
nodes = {'Node':[], 'X':[], 'Y':[], 'Z':[]}
while ie.value < 2:
datalen.value = sizeof(CNODE)
RecLen = c_int(sizeof(cnode))
ie.value = py_sof_cdb_get(Index, 20, 00, byref(cnode), byref(RecLen), 1)
nodes['Node'].append(cnode.m_nr) # node-number
nodes['X'].append(cnode.m_xyz[0]) # x coordinates
nodes['Y'].append(-cnode.m_xyz[1]) # y coordinates
nodes['Z'].append(cnode.m_xyz[2]) # z coordinates
# Always read the length of record before sof_cdb_get is called
RecLen = c_int(sizeof(cnode))
nodes = pd.DataFrame.from_dict(nodes)
node_forces = {'LF':[],'NR':[], 'P [kN]':[]}
LF = [2156]
for lf in LF:
ie = c_int(0)
while ie.value < 2:
datalen.value = sizeof(CN_DISPC)
RecLen = c_int(sizeof(cn_dispc))
ie.value = py_sof_cdb_get(Index, 24, lf, byref(cn_dispc), byref(RecLen), 1)
if cn_dispc.m_id >0:
node_forces['NR'].append(cn_dispc.m_id)
node_forces['LF'].append(lf)
node_forces['P [kN]'].append(cn_dispc.m_pz)
# Always read the length of record before sof_cdb_get is called
RecLen = c_int(sizeof(cn_dispc))