Hyperworks二次开发:获取中面的厚度值(hm_getsurfacethicknessvalues)
函数hm_getsurfacethicknessvalues用来在Hypermesh中获取所抽取中面的厚度和偏置值。命令格式为:
hm_getsurfacethicknessvalues entity_type entity_id
或
hm_getsurfacethicknessvalues entity_type mark_id element_method ?ambiguous_values?
其中各参数含义:
entity_type:输入的待查询元素的类型,可选值为:nodes、points和elems.如果所输入的元素没有关联到任何曲面,则返回错误。
entity_id:所查询元素的ID。
mark_id:如果是第二种命令格式则输入待查询元素的选择集ID。
element_method:单元厚度值和偏置值的测量方式,仅对elems类型有效,如果选择集中只包含nodes和points,则忽略此选项。可取值如下:
0-厚度值和偏置值在单元中心测量;
1-厚度值和偏置值是单元中各个节点位置厚度值和偏置值的平均值,如果单元跨过多个曲面,则返回-1;
2-厚度值和偏置值是单元中各个节点位置厚度值和偏置值的最小值,如果单元跨过多个曲面,则返回-1;
3-厚度值和偏置值是单元中各个节点位置厚度值和偏置值的最大值,如果单元跨过多个曲面,则返回-1;
4-返回单元中每个节点的厚度值。对共享边或共享顶点处的节点,如果单元没有跨越多个曲面则返回单元所在曲面上的相应厚度值,如果单元跨越多个曲面,则通过参数ambiguous_values确定返回值的形式,如果节点处对应的曲面无厚度消息则返回-1.
ambiguous_values:当element_method为4时有效,用来确定共享边或共享顶点处厚度值的计算方式,可取值如下:
1-使用所有共享曲面的平均厚度值;
2-使用所有共享曲面中的最小值;
3-使用所有共享曲面中的最大值。
此函数返回值的格式:
1、对于第一种命令格式,返回值格式如下:
对于节点和点,返回值是其所关联的所有曲面的列表集。每个列表中包含三个值:第一个是所对应曲面的ID,第二个是曲面在此节点或点处的厚度值(如果没有厚度信息则返回-1),第三是厚度的偏置值。
对于单元,仅返回一个列表,第一个值仍是曲面的ID,第二个值是单元中心处的曲面厚度值,第三个是单元中心处厚度的偏置值。
2、对于第二种命令格式,返回值格式如下:
对于节点和点,返回值是包含了所有节点或点及其所关联的所有曲面的列表集。每个列表中包含四个值:第一个是节点或点的ID,第二个是所对应曲面的ID,第三个是曲面在此节点或点处的厚度值(如果没有厚度信息则返回-1),第四是厚度的偏置值。
对于单元,返回值是一个包含了所有单元的列表集。当element_method=0-3时,每个列表中包含4个值:单元ID、曲面ID、厚度值(没有时返回-1)、偏置值;当element_method=4时,每个单元对应的列表中内容如下:第一个值为单元的ID,其他的值则是一个个子列表,每个子列表包含如下内容:节点ID、节点处的厚度值、节点处的偏置值,具体格式如下所示:
{elem_id1 {node_id1 thickness_1 offset_1} {node_id2 thickness_2 offset_2} … {node_n thickness_n offset_n}} {elem_id2 {node_id1 thickness_1 offset_1} {node_id2 thickness_2 offset_2} … {node_n thickness_n offset_n}} … {elem_idn {node_id1 thickness_1 offset_1} {node_id2 thickness_2 offset_2} … {node_n thickness_n offset_n}}.
示例代码:
