////////////////////////////////////////////////////////////////////////////
// System Pre-define Functions
// 95099372-ef3e-11ea-9c81-bf848405c62e
//Callback of data preparation stage before UI is fully loaded.
function OnInitializeData(reload, preview) {
PUI(()=>{
//you can access the 'ui' namespace in the parent form using the variable 'pui' here.
//The 'pui' variable is valid in all functions of this document.
//For robustness, you'd better use 'PUI(cb);' to access 'pui' variable.
});
//ui.stack_force.index = 1;
}
//Callback after UI is fully loaded and displayed.
function OnReady(reload, preview) {
PUI(()=>{
//you can access the 'ui' namespace in the parent form using the variable 'pui' here.
//The 'pui' variable is valid in all functions of this document.
//For robustness, you'd better use 'PUI(cb);' to access 'pui' variable.
});
}
function OnCloseForm() {
}
function OnException(err) {
//ui.MessageBox('Error', '' + err, MessageBox.Icon.Critical, MessageBox.Button.Ok);
}
//////////////////////////////////////////////////////////////////////////
// Callback Functions.
// 641a254c-ef3e-11ea-bc8a-379bb908bdd7
function OnGetFaceName(){
const str = unit.form.mainfrm.OnGetFaceName();
console.log(str);
// 匹配type对应内容的正则表达式,以type:开头,后面跟着非冒号的内容直到遇到空格或者字符串结束
const typeRegex = /type:([^point]+)/;
// 匹配center坐标对应内容的正则表达式
//const centerRegex = /point:([\d. ]+)/;
const typeMatch = str.match(typeRegex);
const typeInfo = typeMatch? typeMatch[1] : null;
//const centerMatch = str.match(centerRegex);
//const centerCoords = centerMatch? centerMatch[1].split(' ').map(x => x.trim()) : null;
const match = str.match(/point:([-\d.]+)\s+([-\d.]+)\s+([-\d.]+)/);
const centerCoords = match.slice(1, 4);
ui.type1.value = typeInfo;
ui.x1.value = centerCoords[0];
ui.y1.value = centerCoords[1];
ui.z1.value = centerCoords[2];
}
function OnGetName(){
const str = unit.form.mainfrm.OnGetName();
const centerRegex = /center:([\d. ]+)/;
const typeInfo = str.split(' ').slice(1, 4).join(' ');
const centerMatch = str.match(centerRegex);
const centerCoords = centerMatch? centerMatch[1].split(' ').map(x => x.trim()) : null;
ui.type.value = typeInfo;
ui.x.value = centerCoords[0];
ui.y.value = centerCoords[1];
ui.z.value = centerCoords[2];
}
function OnModify(idx){
if(idx ===0){
let name = model.acax_app.model.constrain.Get(model.acax_app.model.constrain.Current()).unique;
unit.form.mainfrm.OnModifyArrows(ui.x.value, ui.y.value, ui.z.value, ui.pb_xn.value, ui.pb_yn.value, ui.pb_zn.value, name);
let color = model.acax_app.model.constrain.Get(model.acax_app.model.constrain.Current()).color;
let Load = {
"constraint":"集中载荷压力",
"位置标记" :ui.type.value,
"位置坐标x":ui.x.value,
"位置坐标y":ui.y.value,
"位置坐标z":ui.z.value,
"压力方向xn":ui.pb_xn.value,
"压力方向yn":ui.pb_yn.value,
"压力方向zn":ui.pb_zn.value,
"压力大小xr":ui.pb_xr.value,
"压力大小yr":ui.pb_yr.value,
"压力大小zr":ui.pb_zr.value,
"cons_type":"arrows",
"color":color,
"unique":name
};
unit.form.tree.ModifyConstraint(Load);
unit.form.mainfrm.OnCueline('修改成功', 'green');
}else if(idx === 1){
let name = model.acax_app.model.constrain.Get(model.acax_app.model.constrain.Current()).unique;
unit.form.mainfrm.OnModifyArrows(ui.x1.value, ui.y1.value, ui.z1.value, ui.fa_x.value, ui.fa_y.value, ui.fa_z.value, name);
let color = model.acax_app.model.constrain.Get(model.acax_app.model.constrain.Current()).color;
let Load = {
"constraint":"分布载荷压力",
"位置标记" :ui.type1.value,
"位置坐标x":ui.x1.value,
"位置坐标y":ui.y1.value,
"位置坐标z":ui.z1.value,
"压力方向fa_x":ui.fa_x.value,
"压力方向fa_y":ui.fa_y.value,
"压力方向fa_z":ui.fa_z.value,
"压力大小fa_xr":ui.fa_xr.value,
"压力大小fa_yr":ui.fa_yr.value,
"压力大小fa_zr":ui.fa_zr.value,
"cons_type":"arrows",
"color":color,
"unique":name
};
unit.form.tree.ModifyConstraint(Load);
unit.form.mainfrm.OnCueline('修改成功', 'green');
}
}
function OnValueChange2(){
if(ui.fa_x.value === '' || ui.fa_y.value === '' || ui.fa_z.value === '' || ui.fa_xr.value === '' || ui.fa_yr.value === '' || ui.fa_zr.value === ''){
unit.form.mainfrm.OnChangePicture(3, 3);
//unit.form.mainfrm.OnCueline('
非常抱歉,您输入的数据不在范围内
');
unit.form.mainfrm.OnCueline('您输入的数据不在范围内!!!', 'red');
}else{
unit.form.mainfrm.OnChangePicture(3, 1);
//unit.form.mainfrm.OnCueline('恭喜您,您输入了正确的数据
');
unit.form.mainfrm.OnCueline('您输入了正确的数据!', 'green');
}
}
function OnChangeValue(){
if(ui.pb_xn.value === '' || ui.pb_yn.value === '' || ui.pb_zn.value === '' || ui.pb_xr.value === '' || ui.pb_yr.value === '' || ui.pb_zr.value === ''){
unit.form.mainfrm.OnChangePicture(3, 3);
//unit.form.mainfrm.OnCueline('非常抱歉,您输入的数据不在范围内
');
unit.form.mainfrm.OnCueline('您输入的数据不在范围内!!!', 'red');
}else{
unit.form.mainfrm.OnChangePicture(3, 1);
//unit.form.mainfrm.OnCueline('恭喜您,您输入了正确的数据
');
unit.form.mainfrm.OnCueline('您输入了正确的数据!', 'green');
}
}
function OnReturn(){
unit.form.mainfrm.menu(4);
}
function OnFrameSelect(){
let temp = unit.form.tree.GetCurUniqueName();
let name = temp;
let constrain_data = model.acax_app.model.constrain.Database();
//console.log(workcondition_data);
let i = 0;
let j = 0;
let constrain_arr = Object.keys(constrain_data.db);
//console.log(constrain_data.db);
name = name + "force0";
while(1){
for( i = 0;i < constrain_arr.length;++i) {
if(constrain_data.db[constrain_arr[i]].unique === name) {
++j;
name = temp + "force" + j;
break;
}
}
if(i === constrain_arr.length) {
break;
}
}
let color = unit.form.tree.getRandomHexColor();
let name1 = unit.form.mainfrm.OnArrows(ui.x1.value, ui.y1.value, ui.z1.value, ui.fa_x.value, ui.fa_y.value, ui.fa_z.value, name);
name1 = name1.replace(temp, "");
let Load = {
"constraint":"分布载荷压力",
"位置标记" :ui.type1.value,
"位置坐标x":ui.x1.value,
"位置坐标y":ui.y1.value,
"位置坐标z":ui.z1.value,
"压力方向fa_x":ui.fa_x.value,
"压力方向fa_y":ui.fa_y.value,
"压力方向fa_z":ui.fa_z.value,
"压力大小fa_xr":ui.fa_xr.value,
"压力大小fa_yr":ui.fa_yr.value,
"压力大小fa_zr":ui.fa_zr.value,
"cons_type":"arrows",
"color":color,
"unique":name
};
console.log(name1);
if(ui.type1.value === '--') {
unit.form.mainfrm.OnCueline('您未添加压力位置', 'red');
}else{
unit.form.tree.CreateBoundary(Load, name1);
unit.form.mainfrm.OnCueline('您已将压力数据进行保存,请按鼠标右键选中您要施加约束的物体,并按快捷键R或者r进行添加!', 'green');
}
}
function OnArrowFrame(){
}
function OnArrow(){
let temp = unit.form.tree.GetCurUniqueName();
let name = temp;
let constrain_data = model.acax_app.model.constrain.Database();
//console.log(workcondition_data);
let i = 0;
let j = 0;
let constrain_arr = Object.keys(constrain_data.db);
//console.log(constrain_data.db);
name = name + "force0";
while(1){
for( i = 0;i < constrain_arr.length;++i) {
if(constrain_data.db[constrain_arr[i]].unique === name) {
++j;
name = temp + "force" + j;
break;
}
}
if(i === constrain_arr.length) {
break;
}
}
let name1 = unit.form.mainfrm.OnArrows(ui.x.value, ui.y.value, ui.z.value, ui.pb_xn.value, ui.pb_yn.value, ui.pb_zn.value, name);
name1 = name1.replace(temp, "");
let color = unit.form.tree.getRandomHexColor();
unit.form.mainfrm.OnChangePicture(3, 2);
let Load = {
"constraint":"集中载荷压力",
"位置标记" :ui.type.value,
"位置坐标x":ui.x.value,
"位置坐标y":ui.y.value,
"位置坐标z":ui.z.value,
"压力方向xn":ui.pb_xn.value,
"压力方向yn":ui.pb_yn.value,
"压力方向zn":ui.pb_zn.value,
"压力大小xr":ui.pb_xr.value,
"压力大小yr":ui.pb_yr.value,
"压力大小zr":ui.pb_zr.value,
"cons_type":"arrows",
"color":color,
"unique":name
};
if(ui.type.value === '--') {
unit.form.mainfrm.OnCueline('您未添加压力位置', 'red');
}else{
unit.form.tree.CreateBoundary(Load, name1);
unit.form.mainfrm.OnCueline('您已将压力数据和框选范围进行保存,请按鼠标右键选中您要施加约束的物体,并按快捷键R或者r进行添加以及快捷键U或u者进行框选!', 'green');
}
}
function OnChangeIndex(idx) {
ui.force_arr.index = parseInt(idx);
}
function OnChangeForce(idx){
ui.stack_force.index = parseInt(idx);
}
//The message corresponding callback executed by the docker pane.
// when calling [side_pane].fireEvent(type,para) in the main form.
function OnParentDockerMessage(type, para) {
}
//////////////////////////////////////////////////////////////////////////
// Utils Functions.
// 6c165ad6-ef3e-11ea-987c-b761a131c2fe
function onDragFile(filepath) {
}
function PUI(cb) {
if(pui){cb();}
}
/*Usage of BLOCK_EVENT
BLOCK_EVENT(()=>{
ui.[name].[var] = ...;
});
*/
CW_DeclareVariable("idx",
val => {
ui.force_arr.index = val;
}, () => {});
CW_DeclareVariable("index",
val => {
ui.stack_force.index = val;
}, () => {});
//集中载荷
CW_DeclareVariable("setConstraint0",
val => {
ui.type.value = val["位置标记"];
ui.x.value=val["位置坐标x"];
ui.y.value=val["位置坐标y"];
ui.z.value=val["位置坐标z"];
ui.pb_xn.value = val["压力方向xn"];
ui.pb_yn.value = val["压力方向yn"];
ui.pb_zn.value = val["压力方向zn"];
ui.pb_xr.value = val["压力大小xr"];
ui.pb_yr.value = val["压力大小yr"];
ui.pb_zr.value = val["压力大小zr"];
}, () => {});
//分布载荷
CW_DeclareVariable("setConstraint1",
val => {
ui.type1.value = val["位置标记"];
ui.x1.value= val["位置坐标x"];
ui.y1.value= val["位置坐标y"];
ui.z1.value= val["位置坐标z"];
ui.fa_x.value = val["压力方向fa_x"];
ui.fa_y.value = val["压力方向fa_y"];
ui.fa_z.value = val["压力方向fa_z"];
ui.fa_xr.value = val["压力大小fa_xr"];
ui.fa_yr.value = val["压力大小fa_yr"];
ui.fa_zr.value = val["压力大小fa_zr"];
}, () => {});
function BLOCK_EVENT(cb) {
ui.block_event = true;
cb();
ui.block_event = false;
}
//////////////////////////////////////////////////////////////////////////
// template codes for cw callback js.
function CW_DeclareVariable(name, setter, getter) {
if(typeof(__DeclareVariable) === 'function') {
__DeclareVariable(name, setter, getter);
}
}
function CW_DeclareOuterVariable(name) {
if(typeof(__DeclareOuterVariable) === 'function') {
__DeclareOuterVariable(name);
}
}