qtmodel 1.1.16
qtmodel package
Requires Python: >=3.9

> 最新版本 V1.1.16 - 2026-2-11 
> pip install --upgrade qtmodel -i https://pypi.org/simple
- 新增跨度信息提取接口
# 建模操作 
##  节点操作
### add_nodes
根据坐标信息和节点编号添加一组节点，可指定节点号，或不指定节点号
> 参数:  
> node_data: [[id,x,y,z]...]  或[[x,y,z]...]  指定节点编号时不进行交叉分割、合并、编号等操作  
> intersected: 是否交叉分割  
> is_merged: 是否忽略位置重复节点  
> merge_error: 合并容许误差  
> numbering_type:编号方式 0-未使用的最小号码 1-最大号码加1 2-用户定义号码  
> start_id:自定义节点起始编号(用户定义号码时使用)  
```Python
# 示例代码
from qtmodel import *
mdb.add_nodes(node_data=[[1,1,2,3],[2,1,2,3]])
#Returns: 无
```  
### update_node
根据节点号修改节点坐标
> 参数:  
> node_id: 旧节点编号  
> new_id: 新节点编号,默认为-1时不改变节点编号  
> x: 更新后x坐标  
> y: 更新后y坐标  
> z: 更新后z坐标  
```Python
# 示例代码
from qtmodel import *
mdb.update_node(node_id=1,new_id=2,x=2,y=2,z=2)
#Returns: 无
```  
### update_node_id
修改节点Id
> 参数:  
> node_id: 节点编号  
> new_id: 新节点编号  
```Python
# 示例代码
from qtmodel import *
mdb.update_node_id(node_id=1,new_id=2)
#Returns: 无
```  
### merge_nodes
根据坐标信息和节点编号添加节点，默认自动识别编号
> 参数:  
> ids: 合并节点集合,默认全部节点,支持列表和XtoYbyN形式字符串  
> tolerance: 合并容许误差  
```Python
# 示例代码
from qtmodel import *
mdb.merge_nodes()
#Returns: 无
```  
### move_nodes
移动节点坐标，默认移动所有节点
> 参数:  
> ids:节点号  
> offset_x:X轴偏移量  
> offset_y:Y轴偏移量  
> offset_z:Z轴偏移量  
```Python
# 示例代码
from qtmodel import *
mdb.move_nodes(ids=1,offset_x=1.5,offset_y=1.5,offset_z=1.5)
#Returns: 无
```  
### remove_nodes
删除指定节点,默认删除所有节点
> 参数:  
> ids:节点编号,支持多种类型  
```Python
# 示例代码
from qtmodel import *
mdb.remove_nodes()
mdb.remove_nodes(ids=1)
mdb.remove_nodes(ids=[1,2,3])
#Returns: 无
```  
### renumber_nodes
节点编号重排序，默认按1升序重排所有节点
> 参数:  
> ids:原修改节点号  
> new_ids:新节点号  
```Python
# 示例代码
from qtmodel import *
mdb.renumber_nodes()
mdb.renumber_nodes([7,9,22],[1,2,3])
#Returns: 无
```  
##  单元操作
### add_element
根据单元编号和单元类型添加单元
> 参数:  
> index:单元编号  
> ele_type:单元类型 1-梁 2-杆 3-索 4-板  
> node_ids:单元对应的节点列表 [i,j] 或 [i,j,k,l]  
> beta_angle:贝塔角  
> mat_id:材料编号  
> sec_id:截面编号或者板厚  
> initial_type:索单元初始参数类型 1-初始拉力 2-初始水平力 3-无应力长度  
> initial_value:索单元初始始参数值  
> plate_type:板单元类型  0-薄板 1-厚板  
```Python
# 示例代码
from qtmodel import *
mdb.add_element(index=1,ele_type=1,node_ids=[1,2],beta_angle=1,mat_id=1,sec_id=1)
#Returns: 无
```  
### add_elements
根据单元编号和单元类型添加单元
> 参数:  
> ele_data:单元信息  
> [编号,类型(1-梁 2-杆),materialId,sectionId,betaAngle,nodeI,nodeJ]  
> [编号,类型(3-索),materialId,sectionId,betaAngle,nodeI,nodeJ,张拉类型(1-初拉力 2-初始水平力 3-无应力长度),张拉值]  
> [编号,类型(4-板),materialId,thicknessId,betaAngle,nodeI,nodeJ,nodeK,nodeL,plate_type(0-薄板 1-厚板)]  
```Python
# 示例代码
from qtmodel import *
mdb.add_elements(ele_data=[
[1,1,1,1,0,1,2],
[2,2,1,1,0,1,2],
[3,3,1,1,0,1,2,1,100],
[4,4,1,1,0,1,2,3,4,0]])
#Returns: 无
```  
### update_local_orientation
反转杆系单元局部方向
> 参数:  
> ids: 杆系单元编号,支持整形、列表、XtoYbyZ形式字符串  
```Python
# 示例代码
from qtmodel import *
mdb.update_local_orientation(1)
#Returns: 无
```  
### update_element_id
更改单元编号
> 参数:  
> old_id: 单元编号  
> new_id: 新单元编号  
```Python
# 示例代码
from qtmodel import *
mdb.update_element_id(1,2)
#Returns: 无
```  
### update_element
根据单元编号和单元类型添加单元
> 参数:  
> old_id:原单元编号  
> new_id:现单元编号，默认不修改原单元Id  
> ele_type:单元类型 1-梁 2-杆 3-索 4-板  
> node_ids:单元对应的节点列表 [i,j] 或 [i,j,k,l]  
> beta_angle:贝塔角  
> mat_id:材料编号  
> sec_id:截面编号  
> initial_type:索单元初始参数类型 1-初始拉力 2-初始水平力 3-无应力长度  
> initial_value:索单元初始始参数值  
> plate_type:板单元类型  0-薄板 1-厚板  
```Python
# 示例代码
from qtmodel import *
mdb.update_element(old_id=1,ele_type=1,node_ids=[1,2],beta_angle=1,mat_id=1,sec_id=1)
#Returns: 无
```  
### update_element_material
更新指定单元的材料号
> 参数:  
> ids: 单元编号,支持整形、列表、XtoYbyZ形式字符串  
> mat_id: 材料编号  
```Python
# 示例代码
from qtmodel import *
mdb.update_element_material(ids=1,mat_id=2)
#Returns: 无
```  
### update_element_beta
更新指定单元的贝塔角
> 参数:  
> ids: 单元编号,支持整形、列表、XtoYbyZ形式字符串  
> beta: 贝塔角度数  
```Python
# 示例代码
from qtmodel import *
mdb.update_element_beta(ids=1,beta=90)
#Returns: 无
```  
### update_frame_section
更新杆系单元截面
> 参数:  
> ids: 单元编号,支持整形、列表、XtoYbyZ形式字符串  
> sec_id: 截面号  
```Python
# 示例代码
from qtmodel import *
mdb.update_frame_section(ids=1,sec_id=2)
#Returns: 无
```  
### update_plate_thick
更新杆系单元截面
> 参数:  
> ids: 单元编号,支持整形、列表、XtoYbyZ形式字符串  
> thick_id: 板厚号  
```Python
# 示例代码
from qtmodel import *
mdb.update_plate_thick(ids=1,thick_id=2)
#Returns: 无
```  
### update_element_node
更新单元节点
> 参数:  
> element_id: 单元编号  
> node_ids: 杆系单元时为[i,j] 板单元[i,j,k,l]  
```Python
# 示例代码
from qtmodel import *
mdb.update_element_node(1,[1,2])
mdb.update_element_node(2,[1,2,3,4])
#Returns: 无
```  
### remove_element
删除指定编号的单元,默认则删除所有单元
> 参数:  
> ids: 单元编号,支持整形、列表、XtoYbyZ形式字符串  
> remove_free: 是否删除自由节点  
```Python
# 示例代码
from qtmodel import *
mdb.remove_element()
mdb.remove_element(ids=1)
#Returns: 无
```  
### renumber_elements
单元编号重排序，默认按1升序重排所有节点
> 参数:  
> element_ids:被修改单元号  
> new_ids:新单元号  
```Python
# 示例代码
from qtmodel import *
mdb.renumber_elements()
mdb.renumber_elements([7,9,22],[1,2,3])
#Returns: 无
```  
##  结构组操作
### add_structure_group
添加结构组
> 参数:  
> name: 结构组名  
> node_ids: 节点编号列表,支持XtoYbyN类型字符串(可选参数)  
> element_ids: 单元编号列表,支持XtoYbyN类型字符串(可选参数)  
```Python
# 示例代码
from qtmodel import *
mdb.add_structure_group(name="新建结构组1")
mdb.add_structure_group(name="新建结构组2",node_ids=[1,2,3,4],element_ids=[1,2])
mdb.add_structure_group(name="新建结构组2",node_ids="1to10 11to21by2",element_ids=[1,2])
#Returns: 无
```  
### update_structure_group_name
更新结构组名
> 参数:  
> name: 结构组名  
> new_name: 新结构组名(可选参数)  
```Python
# 示例代码
from qtmodel import *
mdb.update_structure_group_name(name="结构组1",new_name="新结构组")
#Returns: 无
```  
### update_structure_group
更新结构组信息
> 参数:  
> name: 结构组名  
> new_name: 新结构组名  
> node_ids: 节点编号列表,支持XtoYbyN类型字符串(可选参数)  
> element_ids: 单元编号列表,支持XtoYbyN类型字符串(可选参数)  
```Python
# 示例代码
from qtmodel import *
mdb.update_structure_group(name="结构组",new_name="新建结构组",node_ids=[1,2,3,4],element_ids=[1,2])
#Returns: 无
```  
### remove_structure_group
可根据结构与组名删除结构组，当组名为默认则删除所有结构组
> 参数:  
> name:结构组名称  
```Python
# 示例代码
from qtmodel import *
mdb.remove_structure_group(name="新建结构组1")
mdb.remove_structure_group()
#Returns: 无
```  
### add_structure_to_group
为结构组添加节点和/或单元
> 参数:  
> name: 结构组名  
> node_ids: 节点编号列表(可选参数)  
> element_ids: 单元编号列表(可选参数)  
```Python
# 示例代码
from qtmodel import *
mdb.add_structure_to_group(name="现有结构组1",node_ids=[1,2,3,4],element_ids=[1,2])
#Returns: 无
```  
### remove_structure_from_group
为结构组删除节点、单元
> 参数:  
> name: 结构组名  
> node_ids: 节点编号列表(可选参数)  
> element_ids: 单元编号列表(可选参数)  
```Python
# 示例代码
from qtmodel import *
mdb.remove_structure_from_group(name="现有结构组1",node_ids=[1,2,3,4],element_ids=[1,2])
#Returns: 无
```  
##  材料
### add_material
添加材料
> 参数:  
> index:材料编号,默认为最大Id+1  
> name:材料名称  
> mat_type: 材料类型,1-混凝土 2-钢材 3-预应力 4-钢筋 5-自定义 6-组合材料  
> standard:规范序号,参考UI 默认从1开始  
> database:数据库名称  
> construct_factor:构造系数  
> modified:是否修改默认材料参数,默认不修改 (可选参数)  
> data_info:材料参数列表[弹性模量,容重,泊松比,热膨胀系数] (可选参数)  
> creep_id:徐变材料id (可选参数)  
> f_cuk: 立方体抗压强度标准值 (可选参数)  
> composite_info: 主材名和辅材名 (仅组合材料需要)  
```Python
# 示例代码
from qtmodel import *
mdb.add_material(index=1,name="混凝土材料1",mat_type=1,standard=1,database="C50")
mdb.add_material(index=1,name="自定义材料1",mat_type=5,data_info=[3.5e10,2.5e4,0.2,1.5e-5])
#Returns: 无
```  
### add_time_parameter
添加收缩徐变材料
> 参数:  
> index:材料编号,默认为最大Id+1  
> name: 收缩徐变名  
> code_index: 1-公规JTG3362-2018  2-公规JTGD62-2004 3-公规JTJ023-85 4-铁规TB10092-2017 5-地铁GB50157-2013  6-老化理论  7-BS5400_4_1990  8-AASHTO_LRFD_2017    1000-AASHTO_LRFD_2017  
> time_parameter: 对应规范的收缩徐变参数列表,默认不改变规范中信息 (可选参数)  
> creep_data: 徐变数据 [(函数名,龄期)...]  
> shrink_data: 收缩函数名  
```Python
# 示例代码
from qtmodel import *
mdb.add_time_parameter(name="收缩徐变材料1",code_index=1)
#Returns: 无
```  
### add_creep_function
添加徐变函数
> 参数:  
> name:徐变函数名  
> creep_data:徐变数据[(时间,徐变系数)...]  
> scale_factor:缩放系数  
```Python
# 示例代码
from qtmodel import *
mdb.add_creep_function(name="徐变函数名",creep_data=[(5,0.5),(100,0.75)])
#Returns: 无
```  
### add_shrink_function
添加收缩函数
> 参数:  
> name:收缩函数名  
> shrink_data:收缩数据[(时间,收缩系数)...]  
> scale_factor:缩放系数  
```Python
# 示例代码
from qtmodel import *
mdb.add_shrink_function(name="收缩函数名",shrink_data=[(5,0.5),(100,0.75)])
mdb.add_shrink_function(name="收缩函数名",scale_factor=1.2)
#Returns: 无
```  
### update_material
todo 更新材料
> 参数:  
> name:旧材料名称  
> new_name:新材料名称,默认不更改名称  
> new_id:新材料Id,默认不更改Id  
> mat_type: 材料类型,1-混凝土 2-钢材 3-预应力 4-钢筋 5-自定义 6-组合材料  
> standard:规范序号,参考UI 默认从1开始  
> database:数据库名称  
> construct_factor:构造系数  
> modified:是否修改默认材料参数,默认不修改 (可选参数)  
> data_info:材料参数列表[弹性模量,容重,泊松比,热膨胀系数] (可选参数)  
> creep_id:徐变材料id (可选参数)  
> f_cuk: 立方体抗压强度标准值 (可选参数)  
> composite_info: 主材名和辅材名 (仅组合材料需要)  
```Python
# 示例代码
from qtmodel import *
mdb.update_material(name="混凝土材料1",mat_type=1,standard=1,database="C50")
mdb.update_material(name="自定义材料1",mat_type=5,data_info=[3.5e10,2.5e4,0.2,1.5e-5])
#Returns: 无
```  
### update_creep_function
todo 更新徐变函数
> 参数:  
> name:徐变函数名  
> new_name: 新徐变函数名，默认不改变函数名  
> creep_data:徐变数据，默认不改变函数名 [(时间,徐变系数)...]  
> scale_factor:缩放系数  
```Python
# 示例代码
from qtmodel import *
mdb.add_creep_function(name="徐变函数名",creep_data=[(5,0.5),(100,0.75)])
#Returns: 无
```  
### update_shrink_function
todo 更新收缩函数
> 参数:  
> name:收缩函数名  
> new_name:收缩函数名  
> shrink_data:收缩数据,默认不改变数据 [(时间,收缩系数)...]  
> scale_factor:缩放系数  
```Python
# 示例代码
from qtmodel import *
mdb.update_shrink_function(name="收缩函数名",new_name="函数名2")
mdb.update_shrink_function(name="收缩函数名",shrink_data=[(5,0.5),(100,0.75)])
mdb.update_shrink_function(name="收缩函数名",scale_factor=1.2)
#Returns: 无
```  
### remove_shrink_function
todo 删除收缩函数
> 参数:  
> name:收缩函数名  
```Python
# 示例代码
from qtmodel import *
mdb.remove_shrink_function(name="收缩函数名")
#Returns: 无
```  
### remove_creep_function
todo 删除徐变函数
> 参数:  
> name:徐变函数名  
```Python
# 示例代码
from qtmodel import *
mdb.remove_creep_function(name="徐变函数名")
#Returns: 无
```  
### update_material_time_parameter
todo 将收缩徐变参数连接到材料
> 参数:  
> name: 材料名  
> time_parameter_name: 收缩徐变名称  
> f_cuk: 材料标准抗压强度,仅自定义材料是需要输入  
```Python
# 示例代码
from qtmodel import *
mdb.update_material_time_parameter(name="C60",time_parameter_name="收缩徐变1",f_cuk=5e7)
#Returns: 无
```  
### update_material_id
todo 更新材料编号
> 参数:  
> name:材料名称  
> new_id:新编号  
```Python
# 示例代码
from qtmodel import *
mdb.update_material_id(name="材料1",new_id=2)
#Returns: 无
```  
### remove_material
todo 删除指定材料
> 参数:  
> index:指定材料编号，默认则删除所有材料  
> name: 指定材料名，材料名为空时按照index删除  
```Python
# 示例代码
from qtmodel import *
mdb.remove_material()
mdb.remove_material(index=1)
#Returns: 无
```  
### update_material_construction_factor
todo 更新材料构造系数
> 参数:  
> name:指定材料编号，默认则删除所有材料  
> factor:指定材料编号，默认则删除所有材料  
```Python
# 示例代码
from qtmodel import *
mdb.update_material_construction_factor(name="材料1",factor=1.0)
#Returns: 无
```  
### remove_time_parameter
todo 删除指定时间依存材料
> 参数:  
> name: 指定收缩徐变材料名  
```Python
# 示例代码
from qtmodel import *
mdb.remove_time_parameter("收缩徐变材料1")
#Returns: 无
```  
##  板厚
### add_thickness
添加板厚
> 参数:  
> index: 板厚id  
> name: 板厚名称  
> t: 板厚度  
> thick_type: 板厚类型 0-普通板 1-加劲肋板  
> bias_info: 默认不偏心,偏心时输入列表[type(0-厚度比 1-数值),value]  
> rib_pos: 肋板位置 0-下部 1-上部  
> dist_v: 纵向截面肋板间距  
> dist_l: 横向截面肋板间距  
> rib_v: 纵向肋板信息  
> rib_l: 横向肋板信息  
```Python
# 示例代码
from qtmodel import *
mdb.add_thickness(name="厚度1", t=0.2,thick_type=0,bias_info=(0,0.8))
mdb.add_thickness(name="厚度2", t=0.2,thick_type=1,rib_pos=0,dist_v=0.1,rib_v=[1,1,0.02,0.02])
#Returns: 无
```  
### update_thickness_id
todo 更新板厚编号
> 参数:  
> index: 板厚id  
> new_id: 新板厚id  
```Python
# 示例代码
from qtmodel import *
mdb.update_thickness_id(1,2)
#Returns: 无
```  
### remove_thickness
todo 删除板厚
> 参数:  
> index:板厚编号,默认时删除所有板厚信息  
> name:默认按照编号删除,如果不为空则按照名称删除  
```Python
# 示例代码
from qtmodel import *
mdb.remove_thickness()
mdb.remove_thickness(index=1)
mdb.remove_thickness(name="板厚1")
#Returns: 无
```  
##  截面
### add_section
添加单一截面信息,如果截面存在则自动覆盖
> 参数:  
> index: 截面编号,默认自动识别  
> name:截面名称  
> sec_type:参数截面类型名称(详见UI界面)  
> sec_info:截面信息 (必要参数)  
> symmetry:混凝土截面是否对称 (仅混凝土箱梁截面需要)  
> charm_info:混凝土截面倒角信息 (仅混凝土箱梁截面需要)  
> sec_right:混凝土截面右半信息 (对称时可忽略，仅混凝土箱梁截面需要)  
> charm_right:混凝土截面右半倒角信息 (对称时可忽略，仅混凝土箱梁截面需要)  
> box_num: 混凝土箱室数 (仅混凝土箱梁截面需要)  
> box_height: 混凝土箱梁梁高 (仅混凝土箱梁截面需要)  
> box_other_info: 混凝土箱梁额外信息(键包括"i1" "B0" "B4" "T4" 值为列表)  
> box_other_right: 混凝土箱梁额外信息(对称时可忽略，键包括"i1" "B0" "B4" "T4" 值为列表)  
> mat_combine: 组合截面材料信息 (仅组合材料需要) [弹性模量比s/c、密度比s/c、钢材泊松比、混凝土泊松比、热膨胀系数比s/c]  
> rib_info:肋板信息  
> rib_place:肋板位置 list[tuple[布置具体部位,参考点0-下/左,距参考点间距,肋板名，加劲肋位置0-上/左 1-下/右 2-两侧,加劲肋名]]  
> _布置具体部位(工字钢梁) 1-上左 2-上右 3-腹板 4-下左 5-下右  
> _布置具体部位(箱型钢梁) 1-上左 2-上中 3-上右 4-左腹板 5-右腹板 6-下左 7-下中 8-下右  
> loop_segments:线圈坐标集合 list[dict] dict示例:{"main":[(x1,y1),(x2,y2)...],"sub1":[(x1,y1),(x2,y2)...],"sub2":[(x1,y1),(x2,y2)...]}  
> sec_lines:线宽集合[(x1,y1,x2,y3,thick),]  
> secondary_loop_segments:辅材线圈坐标集合 list[dict] (同loop_segments)，建议以左下角为组合截面原点建立截面  
> sec_property:截面特性(参考UI界面共计29个参数)，可选参数，指定截面特性时不进行截面计算  
> bias_type:偏心类型 默认中心  
> center_type:中心类型 默认质心  
> shear_consider:考虑剪切 bool 默认考虑剪切变形  
> bias_x:自定义偏心点x坐标 (仅自定义类型偏心需要,相对于center_type偏移)  
> bias_y:自定义偏心点y坐标 (仅自定义类型偏心需要,相对于center_type偏移)  
```Python
# 示例代码
from qtmodel import *
mdb.add_section(name="截面1",sec_type="矩形",sec_info=[2,4],bias_type="中心")
mdb.add_section(name="截面2",sec_type="混凝土箱梁",box_height=2,box_num=3,
sec_info=[0.2,0.4,0.1,0.13,3,1,2,1,0.02,0,12,5,6,0.28,0.3,0.5,0.5,0.5,0.2],
charm_info=["1*0.2,0.1*0.2","0.5*0.15,0.3*0.2","0.4*0.2","0.5*0.2"])
mdb.add_section(name="钢梁截面1",sec_type="工字钢梁",sec_info=[0,0,0.5,0.5,0.5,0.5,0.7,0.02,0.02,0.02])
mdb.add_section(name="钢梁截面2",sec_type="箱型钢梁",sec_info=[0,0.15,0.25,0.5,0.25,0.15,0.4,0.15,0.7,0.02,0.02,0.02,0.02],
rib_info = {"板肋1": [0.1,0.02],"T形肋1":[0.1,0.02,0.02,0.02]},
rib_place = [(1, 0, 0.1, "板肋1", 2, "默认名称1"),
(1, 0, 0.2, "板肋1", 2, "默认名称1")])
#Returns: 无
```  
### add_single_section
以字典形式添加单一截面
> 参数:  
> index:截面编号  
> name:截面名称  
> sec_type:截面类型  
> sec_data:截面信息字典，键值参考添加add_section方法参数  
```Python
# 示例代码
from qtmodel import *
mdb.add_single_section(index=1,name="变截面1",sec_type="矩形",
sec_data={"sec_info":[1,2],"bias_type":"中心"})
#Returns: 无
```  
### add_tapper_section
添加变截面,字典参数参考单一截面,如果截面存在则自动覆盖
> 参数:  
> index:截面编号  
> name:截面名称  
> sec_type:截面类型  
> sec_begin:截面始端截面信息字典，键值参考添加add_section方法参数  
> sec_end:截面末端截面信息字典，键值参考添加add_section方法参数  
> shear_consider:考虑剪切变形  
> sec_normalize:变截面线段线圈重新排序  
```Python
# 示例代码
from qtmodel import *
mdb.add_tapper_section(index=1,name="变截面1",sec_type="矩形",
sec_begin={"sec_info":[1,2],"bias_type":"中心"},
sec_end={"sec_info":[2,2],"bias_type":"中心"})
#Returns: 无
```  
### calculate_section_property
重新计算所有截面特性
> 参数:  
```Python
# 示例代码
from qtmodel import *
mdb.calculate_section_property()
#Returns: 无
```  
### remove_unused_sections
删除未使用截面
> 参数:  
```Python
# 示例代码
from qtmodel import *
mdb.remove_unused_sections()
#Returns: 无
```  
### add_tapper_section_by_id
添加变截面,需先建立单一截面
> 参数:  
> index:截面编号  
> name:截面名称  
> begin_id:截面始端编号  
> end_id:截面末端编号  
> shear_consider:考虑剪切变形  
> sec_normalize: 开启变截面线圈和线宽自适应排序 (避免两端截面绘制顺序导致的渲染和计算失效)  
```Python
# 示例代码
from qtmodel import *
mdb.add_tapper_section_by_id(name="变截面1",begin_id=1,end_id=2)
#Returns: 无
```  
### update_single_section
todo 以字典形式添加单一截面
> 参数:  
> index:截面编号  
> new_id:新截面编号，默认为-1时不修改截面编号  
> name:截面名称  
> sec_type:截面类型  
> sec_data:截面信息字典，键值参考添加add_section方法参数  
```Python
# 示例代码
from qtmodel import *
mdb.update_single_section(index=1,name="变截面1",sec_type="矩形",
sec_data={"sec_info":[1,2],"bias_type":"中心"})
#Returns: 无
```  
### update_tapper_section
todo 添加变截面,字典参数参考单一截面,如果截面存在则自动覆盖
> 参数:  
> index:截面编号  
> new_id:新截面编号，默认不修改截面编号  
> name:截面名称  
> sec_type:截面类型  
> sec_begin:截面始端编号  
> sec_end:截面末端编号  
> shear_consider:考虑剪切变形  
> sec_normalize:变截面线段线圈重新排序  
```Python
# 示例代码
from qtmodel import *
mdb.add_tapper_section(index=1,name="变截面1",sec_type="矩形",
sec_begin={"sec_info":[1,2],"bias_type":"中心"},
sec_end={"sec_info":[2,2],"bias_type":"中心"})
#Returns: 无
```  
### update_section_bias
todo 更新截面偏心
> 参数:  
> index:截面编号  
> bias_type:偏心类型  
> center_type:中心类型  
> shear_consider:考虑剪切  
> bias_point:自定义偏心点(仅自定义类型偏心需要)  
> side_i: 是否为截面I,否则为截面J(仅变截面需要)  
```Python
# 示例代码
from qtmodel import *
mdb.update_section_bias(index=1,bias_type="中上",center_type="几何中心")
mdb.update_section_bias(index=1,bias_type="自定义",bias_point=[0.1,0.2])
#Returns: 无
```  
### update_section_property
todo 更新截面特性
> 参数:  
> index:截面号  
> sec_property:截面特性值参考UI共计26个数值  
> side_i:是否为I端截面(仅变截面需要)  
```Python
# 示例代码
from qtmodel import *
mdb.update_section_property(index=1,sec_property=[i for i in range(1,27)])
#Returns: 无
```  
### update_section_id
todo 更新截面编号
> 参数:  
> index: 原编号  
> new_id: 新编号  
```Python
# 示例代码
from qtmodel import *
mdb.update_section_id(index=1,new_id=2)
#Returns:无
```  
### remove_section
删除截面信息,默认则删除所有截面
> 参数:  
> ids: 截面编号  
```Python
# 示例代码
from qtmodel import *
mdb.remove_section(1)
mdb.remove_section("1to100")
#Returns: 无
```  
##  变截面组
### add_tapper_section_group
添加变截面组
> 参数:  
> ids:变截面组单元号,支持XtoYbyN类型字符串  
> name: 变截面组名  
> factor_w: 宽度方向变化阶数 线性(1.0) 非线性(!=1.0)  
> factor_h: 高度方向变化阶数 线性(1.0) 非线性(!=1.0)  
> ref_w: 宽度方向参考点 0-i 1-j  
> ref_h: 高度方向参考点 0-i 1-j  
> dis_w: 宽度方向距离  
> dis_h: 高度方向距离  
> parameter_info:参数化变截面组信息,键为参数名(参考UI)值为如下三种类型  
> 1(非线性),指数,参考点(I/J),距离  
> 2(自定义),变化长1,终点值1,变化长2,终点值2...  
> 3(圆弧),半径,参考点(I/J)  
```Python
# 示例代码
from qtmodel import *
mdb.add_tapper_section_group(ids=[1,2,3,4],name="变截面组1")
mdb.add_tapper_section_group(ids=[1,2,3,4],name="参数化变截面组",parameter_info={"梁高(H)":"1,2,I,0"})
#Returns: 无
```  
### add_elements_to_tapper_section_group
添加单元到变截面组
> 参数:  
> name:变截面组名称  
> ids:新增单元编号  
```Python
# 示例代码
from qtmodel import *
mdb.add_elements_to_tapper_section_group("变截面组1",ids=[1,2,3,4,5,6])
mdb.add_elements_to_tapper_section_group("变截面组1",ids="1to6")
#Returns:无
```  
### add_tapper_section_from_group
将变截面组转为变截面
> 参数:  
> name: 变截面组名，默认则转化全部变截面组  
```Python
# 示例代码
from qtmodel import *
mdb.add_tapper_section_from_group()
mdb.add_tapper_section_from_group("变截面组1")
#Returns: 无
```  
### update_tapper_section_group
todo 更新变截面组
> 参数:  
> name:变截面组组名  
> new_name: 新变截面组名  
> ids:变截面组包含的单元号,支持XtoYbyN形式字符串  
> factor_w: 宽度方向变化阶数 线性(1.0) 非线性(!=1.0)  
> factor_h: 高度方向变化阶数 线性(1.0) 非线性(!=1.0)  
> ref_w: 宽度方向参考点 0-i 1-j  
> ref_h: 高度方向参考点 0-i 1-j  
> dis_w: 宽度方向距离  
> dis_h: 高度方向距离  
> parameter_info:参数化变截面组信息,键为参数名(参考UI)值为如下三种类型  
> 1(非线性),指数,参考点(I/J),距离  
> 2(自定义),变化长1,终点值1,变化长2,终点值2...  
> 3(圆弧),半径,参考点(I/J)  
```Python
# 示例代码
from qtmodel import *
mdb.update_tapper_section_group(name="变截面组1",ids=[1,2,3,4])
mdb.update_tapper_section_group(name="变截面组2",ids="1t0100")
#Returns: 无
```  
### remove_tapper_section_group
todo  删除变截面组，默认删除所有变截面组
> 参数:  
> name:变截面组名称  
```Python
# 示例代码
from qtmodel import *
mdb.remove_tapper_section_group()
mdb.remove_tapper_section_group("变截面组1")
#Returns:无
```  
##  边界操作
### add_effective_width
添加有效宽度系数
> 参数:  
> element_ids:边界单元号支持整形和整形列表且支持XtoYbyN形式  
> factor_i:I端截面Iy折减系数  
> factor_j:J端截面Iy折减系数  
> dz_i:I端截面形心变换量  
> dz_j:J端截面形心变换量  
> group_name:边界组名  
```Python
# 示例代码
from qtmodel import *
mdb.add_effective_width(element_ids=[1,2,3,4],factor_i=0.1,factor_j=0.1,dz_i=0.1,dz_j=0.1)
mdb.add_effective_width(element_ids="1to4",factor_i=0.1,factor_j=0.1,dz_i=0.1,dz_j=0.1)
#Returns: 无
```  
### add_boundary_group
新建边界组
> 参数:  
> name:边界组名  
```Python
# 示例代码
from qtmodel import *
mdb.add_boundary_group(name="边界组1")
#Returns: 无
```  
### add_general_elastic_support_property
添加一般弹性支承特性
> 参数:  
> name:一般弹性支承特性名称  
> data_matrix:一般弹性支承刚度矩阵(数据需按列输入至列表,共计21个参数)  
```Python
# 示例代码
from qtmodel import *
mdb.add_general_elastic_support_property(name = "特性1", data_matrix=[i for i in range(1,22)])
#Returns: 无
```  
### add_general_elastic_support
添加一般弹性支承特性
> 参数:  
> node_id:节点号,支持整数或整数型列表且支持XtoYbyN形式字符串  
> property_name:一般弹性支承特性名  
> group_name:一般弹性支承边界组名  
```Python
# 示例代码
from qtmodel import *
mdb.add_general_elastic_support(node_id=1, property_name = "特性1",group_name="边界组1")
#Returns: 无
```  
### add_general_support
添加一般支承
> 参数:  
> node_id:节点编号,支持整数或整数型列表且支持XtoYbyN形式字符串  
> boundary_info:边界信息  [X,Y,Z,Rx,Ry,Rz]  ture-固定 false-自由,也可传数值列表(0-自由 1-固定)  
> group_name:边界组名,默认为默认边界组  
```Python
# 示例代码
from qtmodel import *
mdb.add_general_support(node_id=1, boundary_info=[True,True,True,False,False,False])
mdb.add_general_support(node_id="1to100", boundary_info=[True,True,True,False,False,False])
mdb.add_general_support(node_id="1to100", boundary_info=[1,1,1,0,0,0])
#Returns: 无
```  
### add_elastic_support
添加弹性支承
> 参数:  
> node_id:节点编号,支持数或列表且支持XtoYbyN形式字符串  
> support_type:支承类型 1-线性  2-受拉  3-受压  
> boundary_info:边界信息 受拉和受压时列表长度为2-[direct(1-X 2-Y 3-Z),stiffness]  线性时列表长度为6-[kx,ky,kz,krx,kry,krz]  
> group_name:边界组  
```Python
# 示例代码
from qtmodel import *
mdb.add_elastic_support(node_id=1,support_type=1,boundary_info=[1e6,0,1e6,0,0,0])
mdb.add_elastic_support(node_id=1,support_type=2,boundary_info=[1,1e6])
mdb.add_elastic_support(node_id=1,support_type=3,boundary_info=[1,1e6])
#Returns: 无
```  
### add_elastic_link
添加弹性连接，建议指定index(弹性连接编号)
> 参数:  
> index:弹性连接编号,默认自动识别  
> link_type:节点类型 1-一般弹性连接 2-刚性连接 3-受拉弹性连接 4-受压弹性连接  
> start_id:起始节点号  
> end_id:终节点号  
> beta_angle:贝塔角  
> boundary_info:边界信息  
> group_name:边界组名  
> dis_ratio:距i端距离比 (仅一般弹性连接需要)  
> kx:受拉或受压刚度  
```Python
# 示例代码
from qtmodel import *
mdb.add_elastic_link(link_type=1,start_id=1,end_id=2,boundary_info=[1e6,1e6,1e6,0,0,0])
mdb.add_elastic_link(link_type=2,start_id=1,end_id=2)
mdb.add_elastic_link(link_type=3,start_id=1,end_id=2,kx=1e6)
#Returns: 无
```  
### add_master_slave_links
批量添加主从约束，不指定编号默认为最大编号加1
> 参数:  
> node_ids:主节点号和从节点号，主节点号位于首位  
> boundary_info:边界信息 [X,Y,Z,Rx,Ry,Rz] ture-固定 false-自由  
> group_name:边界组名  
```Python
# 示例代码
from qtmodel import *
mdb.add_master_slave_links(node_ids=[(1,2),(1,3),(4,5),(4,6)],boundary_info=[True,True,True,False,False,False])
#Returns: 无
```  
### add_master_slave_link
添加主从约束
> 参数:  
> master_id:主节点号  
> slave_id:从节点号，支持整数或整数型列表且支持XtoYbyN形式字符串  
> boundary_info:边界信息 [X,Y,Z,Rx,Ry,Rz] ture-固定 false-自由  
> group_name:边界组名  
```Python
# 示例代码
from qtmodel import *
mdb.add_master_slave_link(master_id=1,slave_id=[2,3],boundary_info=[True,True,True,False,False,False])
mdb.add_master_slave_link(master_id=1,slave_id="2to3",boundary_info=[True,True,True,False,False,False])
#Returns: 无
```  
### add_beam_constraint
添加梁端约束
> 参数:  
> beam_id:梁号  
> info_i:i端约束信息 [X,Y,Z,Rx,Ry,Rz] ture-固定 false-自由  
> info_j:j端约束信息 [X,Y,Z,Rx,Ry,Rz] ture-固定 false-自由  
> group_name:边界组名  
```Python
# 示例代码
from qtmodel import *
mdb.add_beam_constraint(beam_id=2,info_i=[True,True,True,False,False,False],info_j=[True,True,True,False,False,False])
#Returns: 无
```  
### add_constraint_equation
添加约束方程
> 参数:  
> name:约束方程名  
> sec_node:从节点号  
> sec_dof: 从节点自由度 1-x 2-y 3-z 4-rx 5-ry 6-rz  
> master_info:主节点约束信息列表  
> group_name:边界组名  
```Python
# 示例代码
from qtmodel import *
mdb.add_beam_constraint(beam_id=2,info_i=[True,True,True,False,False,False],info_j=[True,True,True,False,False,False])
#Returns: 无
```  
### add_node_axis
添加节点坐标
> 参数:  
> node_id:节点号  
> input_type:输入方式 1-角度 2-三点  3-向量  
> coord_info:局部坐标信息 -List<float>(角)  -List<List<float>>(三点 or 向量)  
```Python
# 示例代码
from qtmodel import *
mdb.add_node_axis(input_type=1,node_id=1,coord_info=[45,45,45])
mdb.add_node_axis(input_type=2,node_id=1,coord_info=[[0,0,1],[0,1,0],[1,0,0]])
mdb.add_node_axis(input_type=3,node_id=1,coord_info=[[0,0,1],[0,1,0]])
#Returns: 无
```  
### remove_effective_width
删除有效宽度系数
> 参数:  
> element_ids:边界单元号支持整形和整形列表且支持XtoYbyN形式  
> group_name:边界组名  
```Python
# 示例代码
from qtmodel import *
mdb.remove_effective_width(element_ids=[1,2,3,4],group_name="边界组1")
mdb.remove_effective_width(element_ids="1to4",group_name="边界组1")
#Returns: 无
```  
### update_boundary_group
更改边界组名
> 参数:  
> name:边界组名  
> new_name:新边界组名  
```Python
# 示例代码
from qtmodel import *
mdb.update_boundary_group("旧边界组","新边界组")
#Returns: 无
```  
### remove_boundary_group
按照名称删除边界组
> 参数:  
> name: 边界组名称，默认删除所有边界组 (非必须参数)  
```Python
# 示例代码
from qtmodel import *
mdb.remove_boundary_group()
mdb.remove_boundary_group(name="边界组1")
#Returns: 无
```  
### remove_all_boundary
根据边界组名称、边界的类型和编号删除边界信息,默认时删除所有边界信息
> 参数:  
```Python
# 示例代码
from qtmodel import *
mdb.remove_all_boundary()
#Returns: 无
```  
### remove_boundary
根据节点号删除一般支撑、弹性支承/根据弹性连接I或J端(需指定)节点号删除弹性连接/根据单元号删除梁端约束/根据从节点号和约束方程名删除约束方程/根据从节点号删除主从约束
> 参数:  
> remove_id:节点号 or 单元号  or 从节点号  
> kind:边界类型  ["一般支承", "弹性支承","一般弹性支承", "主从约束", "一般/受拉/受压/刚性弹性连接", "约束方程", "梁端约束"]  
> group_name:边界所处边界组名  
> extra_name:删除弹性连接或约束方程时额外标识,约束方程名或指定删除弹性连接节点类型 I/J  
```Python
# 示例代码
from qtmodel import *
mdb.remove_boundary(remove_id=11, kind="一般弹性连接",group_name="边界组1", extra_name="J")
mdb.remove_boundary(remove_id=12, kind="约束方程",group_name="边界组1", extra_name="约束方程名")
#Returns: 无
```  
### update_general_elastic_support_property
添加一般弹性支承特性
> 参数:  
> name:原一般弹性支承特性名称  
> new_name:现一般弹性支承特性名称  
> data_matrix:一般弹性支承刚度矩阵(数据需按列输入至列表,共计21个参数)  
```Python
# 示例代码
from qtmodel import *
mdb.update_general_elastic_support_property(name = "特性1",new_name="特性2", data_matrix=[i for i in range(1,22)])
#Returns: 无
```  
### remove_general_elastic_support_property
添加一般弹性支承特性
> 参数:  
> name:一般弹性支承特性名称  
```Python
# 示例代码
from qtmodel import *
mdb.remove_general_elastic_support_property(name = "特性1")
#Returns: 无
```  
### update_node_axis
添加节点坐标
> 参数:  
> node_id:节点号  
> new_id:新节点号  
> input_type:输入方式 1-角度 2-三点  3-向量  
> coord_info:局部坐标信息 -List<float>(角)  -List<List<float>>(三点 or 向量)  
```Python
# 示例代码
from qtmodel import *
mdb.update_node_axis(node_id=1,new_id=1,input_type=1,coord_info=[45,45,45])
mdb.update_node_axis(node_id=2,new_id=2,input_type=2,coord_info=[[0,0,1],[0,1,0],[1,0,0]])
mdb.update_node_axis(node_id=3,new_id=3,input_type=3,coord_info=[[0,0,1],[0,1,0]])
#Returns: 无
```  
### remove_node_axis
添加节点坐标
> 参数:  
> node_id:节点号  
```Python
# 示例代码
from qtmodel import *
mdb.remove_node_axis(node_id=1)
#Returns: 无
```  
##  钢束操作
### add_tendon_group
按照名称添加钢束组，添加时可指定钢束组id
> 参数:  
> name: 钢束组名称  
```Python
# 示例代码
from qtmodel import *
mdb.add_tendon_group(name="钢束组1")
#Returns: 无
```  
### add_tendon_property
添加钢束特性
> 参数:  
> name:钢束特性名  
> tendon_type: 0-PRE 1-POST  
> material_name: 钢材材料所属名称  
> duct_type: 1-金属波纹管  2-塑料波纹管  3-铁皮管  4-钢管  5-抽芯成型  
> steel_type: 1-钢绞线  2-螺纹钢筋  
> steel_detail: 钢束详细信息  
> _钢绞线[钢束面积,孔道直径,摩阻系数,偏差系数]_  
> _螺纹钢筋[钢筋直径,钢束面积,孔道直径,摩阻系数,偏差系数,张拉方式(1-一次张拉 2-超张拉)]_  
> loos_detail: 松弛信息[规范,张拉,松弛] (仅钢绞线需要,默认为[1,1,1])  
> _规范:1-公规 2-铁规_  
> _张拉方式:1-一次张拉 2-超张拉_  
> _松弛类型：1-一般松弛 2-低松弛_  
> slip_info: 滑移信息[始端距离,末端距离] 默认为[0.006, 0.006]  
```Python
# 示例代码
from qtmodel import *
mdb.add_tendon_property(name="钢束1",tendon_type=0,material_name="预应力材料",duct_type=1,steel_type=1,
steel_detail=[0.00014,0.10,0.25,0.0015],loos_detail=(1,1,1))
#Returns: 无
```  
### add_tendon_3d
添加三维钢束
> 参数:  
> name:钢束名称  
> property_name:钢束特性名称  
> group_name:默认钢束组  
> num:根数  
> line_type:1-导线点  2-折线点  
> position_type: 定位方式 1-直线  2-轨迹线  
> control_points: 控制点信息[(x1,y1,z1,r1),(x2,y2,z2,r2)....]  
> point_insert: 定位方式 (直线时为插入点坐标[x,y,z]  轨迹线时[插入端(1-I 2-J),插入方向(1-ij 2-ji),插入单元id])  
> tendon_direction:直线钢束X方向向量  默认为x轴即[1,0,0] (轨迹线不用赋值)  
> rotation_angle:绕钢束旋转角度  
> track_group:轨迹线结构组名  (直线时不用赋值)  
> projection:直线钢束投影 (默认为true)  
```Python
# 示例代码
from qtmodel import *
mdb.add_tendon_3d("BB1",property_name="22-15",num=2,position_type=1,
control_points=[(0,0,-1,0),(10,0,-1,0)],point_insert=(0,0,0))
mdb.add_tendon_3d("BB1",property_name="22-15",num=2,position_type=2,
control_points=[(0,0,-1,0),(10,0,-1,0)],point_insert=(1,1,1),track_group="轨迹线结构组1")
#Returns: 无
```  
### add_tendon_2d
添加三维钢束
> 参数:  
> name:钢束名称  
> property_name:钢束特性名称  
> group_name:默认钢束组  
> num:根数  
> line_type:1-导线点  2-折线点  
> position_type: 定位方式 1-直线  2-轨迹线  
> symmetry: 对称点 0-左端点 1-右端点 2-不对称  
> control_points: 控制点信息[(x1,z1,r1),(x2,z2,r2)....] 三维[(x1,y1,z1,r1),(x2,y2,z2,r2)....]  
> control_points_lateral: 控制点横弯信息[(x1,y1,r1),(x2,y2,r2)....]，无横弯时不必输入  
> point_insert: 定位方式 (直线时为插