hamedall
Structural
- Oct 7, 2024
- 2
i want to create custom grid lines in etabs2016 API by Python. Has anybody solved how to create custom grid lines?
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
def add_gridlines_for_system(SapModel,grid_sys,gridlines,
ord_type='coord'):
"""
grid_sys='G1';
gridlines=[['01',[-19660,20910],[-22520,43740]],
['02',[-8614,24430],[-12540,45580]],
['03',[-5529,24240],[-9604,46210]],
['04',[6046,25720],[22.4,48720]]
];
"""
table_key2='Grid Definitions - Grid Lines';
grid_gen=get_table_for_editing_array(table_key2,SapModel);
table_version=grid_gen[0][0];
fields_key=grid_gen[0][1];
nos_records=grid_gen[0][2];
existing_table_data=list(grid_gen[0][3]);
#loop thru the gridlines and see if they are preexisting
grids_to_add=[];
for grid in gridlines:
grid_name=grid[0];
grid_exists=False;
for key in grid_gen[1]:
gridSys=grid_gen[1][key]['Name'];
gridID=grid_gen[1][key]['ID'];
if(grid_sys==gridSys and grid_name==gridID):
grid_exists=True;
if(grid_exists==False):
grids_to_add.append(grid_name);
#add the grids to the grid data
new_table_data=[];
for grid in gridlines:
grid_name=grid[0];
if(ord_type=='coord'):
grid_x1=str(grid[1][0]);
grid_y1=str(grid[1][1]);
grid_x2=str(grid[2][0]);
grid_y2=str(grid[2][1]);
elif(ord_type=='points'):
#get the point coord
pt1,pt2=grid[1];
grid_x1,grid_y1=SapModel.PointObj.GetCoordCartesian(pt1)[0:2];
grid_x1,grid_y1=round(grid_x1,3),round(grid_y1,3);
grid_x1,grid_y1=str(grid_x1),str(grid_y1);
grid_x2,grid_y2=SapModel.PointObj.GetCoordCartesian(pt2)[0:2];
grid_x2,grid_y2=round(grid_x2,3),round(grid_y2,3);
grid_x2,grid_y2=str(grid_x2),str(grid_y2);
if(grid_name in grids_to_add):
new_table_data.extend([grid_sys,'General (Cartesian)',grid_name,
'','',grid_x1,grid_y1,grid_x2,grid_y2,
'End','Yes']);
nos_records+=1;
table_data=existing_table_data+new_table_data;
SapModel.DatabaseTables.SetTableForEditingArray(table_key2,
table_version,fields_key,nos_records,table_data);
#apply the table for editing
ret_val=SapModel.DatabaseTables.ApplyEditedTables(True);
print(ret_val[-2]);
SapModel.View.RefreshView();
return None;