boundary_constraint_pane.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. ////////////////////////////////////////////////////////////////////////////
  2. // System Pre-define Functions
  3. // 95099372-ef3e-11ea-9c81-bf848405c62e
  4. //Callback of data preparation stage before UI is fully loaded.
  5. function OnInitializeData(reload, preview) {
  6. PUI(()=>{
  7. //you can access the 'ui' namespace in the parent form using the variable 'pui' here.
  8. //The 'pui' variable is valid in all functions of this document.
  9. //For robustness, you'd better use 'PUI(cb);' to access 'pui' variable.
  10. });
  11. control(true);
  12. controls(true);
  13. //ui.stack_constraint.index = 1;
  14. //ui.stack_menu.index = 3;
  15. }
  16. //Callback after UI is fully loaded and displayed.
  17. function OnReady(reload, preview) {
  18. PUI(()=>{
  19. //you can access the 'ui' namespace in the parent form using the variable 'pui' here.
  20. //The 'pui' variable is valid in all functions of this document.
  21. //For robustness, you'd better use 'PUI(cb);' to access 'pui' variable.
  22. });
  23. }
  24. function OnCloseForm() {
  25. }
  26. function OnException(err) {
  27. //ui.MessageBox('Error', '' + err, MessageBox.Icon.Critical, MessageBox.Button.Ok);
  28. }
  29. //////////////////////////////////////////////////////////////////////////
  30. // Callback Functions.
  31. // 641a254c-ef3e-11ea-bc8a-379bb908bdd7
  32. function OnChangeBeam(){
  33. if(parseFloat(ui.pb_length.value) <= 0 || parseFloat(ui.rad.value) <= 0 || parseFloat(ui.m.value) <= 0 || parseFloat(ui.poi.value) <= 0 || parseFloat(ui.rad.value) <= 0){
  34. unit.form.mainfrm.OnChangePicture(3, 3);
  35. //unit.form.mainfrm.OnCueline('<h4 style="font-family:arial;color: red;font-size:20px;">非常抱歉,您输入的数据不在参数范围内!</h4>');
  36. unit.form.mainfrm.OnCueline('您输入的数据不在参数范围内!', 'red');
  37. }else{
  38. unit.form.mainfrm.OnChangePicture(3, 2);
  39. //unit.form.mainfrm.OnCueline('<h4 style="font-family:arial;color: Blue;font-size:20px;">恭喜您,您输入了正确的数据!</h4>');
  40. unit.form.mainfrm.OnCueline('您输入了正确的数据!', 'blue');
  41. }
  42. }
  43. function OnFix(){
  44. var strss = 'fixHighLight ' + ui.con_xn.value + ' ' + ui.con_yn.value + ' ' + ui.con_zn.value + ' ' + ui.con_xr.value + ' ' + ui.con_yr.value + ' ' + ui.con_zr.value;
  45. unit.form.mainfrm.OnSend(strss);
  46. unit.form.mainfrm.OnChangePicture(3 );2;
  47. //unit.form.mainfrm.OnCueline('<h4 style="font-family:arial;color: green;font-size:20px;">恭喜您完成了固定支撑属性的添加,请用鼠标右键选中需要施加约束的物体并按快捷键T或者t进行添加!</h4>');
  48. let Load = {
  49. "约束类型":ui.constraint_type.value,
  50. "固定支撑属性xd":ui.con_xn.value,
  51. "固定支撑属性xr":ui.con_xr.value,
  52. "固定支撑属性yd":ui.con_yn.value,
  53. "固定支撑属性yr":ui.con_yr.value,
  54. "固定支撑属性zd":ui.con_zn.value,
  55. "固定支撑属性zr":ui.con_zr.value
  56. };
  57. unit.form.tree.CreateBoundary(Load);
  58. unit.form.mainfrm.OnCueline('您完成了固定支撑属性的添加,请用鼠标右键选中需要施加约束的物体并按快捷键T或者t进行添加!', 'green');
  59. }
  60. function OnBeam2(){
  61. unit.form.mainfrm.OnSend('beamHightLight2 ' + ui.m_seg.value + ' ' + ui.m_len.value + ' ' + ui.m_radius.value + ' ' + ui.m_mat.value + ' ' + ui.m_poi.value + ' ' + ui.m_R.value + ' '+ ui.m_G.value + ' ' + ui.m_B.value + ' ' + ui.m_ras.value);
  62. model.clearStr();
  63. unit.form.mainfrm.OnChangePicture(3, 2);
  64. //unit.form.mainfrm.OnCueline('<h4 style="font-family:arial;color: green;font-size:20px;">恭喜成功做好了不均匀梁的添加!</h4>');
  65. unit.form.mainfrm.OnCueline('您成功做好了不均匀梁的添加!', 'green');
  66. }
  67. function OnConnect(){
  68. var str = 'connects ' + ui.pb_start_x.value + ' ' + ui.pb_start_y.value + ' ' + ui.pb_start_z.value + ' ' + ui.pb_end_x.value + ' ' + ui.pb_end_y.value + ' ' + ui.pb_end_z.value + ' ' + ui.pb_start_mes.value + ui.pb_end_mes.value + ui.pb_con_r.value + ' ' + ui.pb_con_g.value + ' ' + ui.pb_con_b.value + ' ' + ui.pb_xn.value + ' ' + ui.pb_yn.value + ' ' + ui.pb_zn.value + ' ' + ui.pb_xr.value + ' ' + ui.pb_yr.value + ' ' + ui.pb_zr.value;
  69. unit.form.mainfrm.OnSend(str);
  70. unit.form.mainfrm.OnChangePicture(3, 2);
  71. //unit.form.mainfrm.OnCueline('<h4 style="font-family:arial;color: green;font-size:20px;">恭喜成功地做好了连接!</h4>');
  72. let Load = {
  73. "非约束类型":ui.misConstraints.value,
  74. "起点x":ui.pb_x.value,
  75. "起点y":ui.pb_y.value,
  76. "起点z":ui.pb_z.value,
  77. "终点x":ui.pb_X.value,
  78. "终点y":ui.pb_Y.value,
  79. "终点z":ui.pb_Z.value,
  80. "R":ui.pb_con_r.value,
  81. "G":ui.pb_con_g.value,
  82. "B":ui.pb_con_b.value
  83. };
  84. unit.form.tree.CreateBoundary(Load);
  85. unit.form.mainfrm.OnCueline('您成功地做好了连接!', 'green');
  86. }
  87. function onEndMessage(){
  88. controls(false);
  89. }
  90. function onStartMessage(){
  91. controls(true);
  92. }
  93. function controls(idx){
  94. ui.pb_start_message.enable = !idx;
  95. ui.pb_start_mes.enable = !idx;
  96. ui.pb_start_x.enable = idx;
  97. ui.pb_start_y.enable = idx;
  98. ui.pb_start_z.enable = idx;
  99. ui.pb_end_message.enable = idx;
  100. ui.pb_end_mes.enable = idx;
  101. ui.pb_end_x.enable = !idx;
  102. ui.pb_end_y.enable = !idx;
  103. ui.pb_end_z.enable = !idx;
  104. if(idx === true){
  105. model.setStartEnd(0);
  106. }
  107. if(idx === false){
  108. model.setStartEnd(1);
  109. }
  110. }
  111. function OnChangeValue(){
  112. ui.pb_pass.enable = false;
  113. }
  114. function OnReturn(){
  115. unit.form.mainfrm.menu(4);
  116. }
  117. function OnFile(){
  118. ui.pb_pass.enable = true;
  119. model.setCon(1);
  120. if(ui.stack_menu.index === 0){
  121. let id = parent.setTimeout(() => {
  122. unit.form.mainfrm.OnSend('0');
  123. }, 100);
  124. unit.form.mainfrm.OnSend('beamSave ' + model.getCurrentDirectory());
  125. }
  126. if(ui.stack_menu.index === 1){
  127. let id = parent.setTimeout(() => {
  128. unit.form.mainfrm.OnSend('0');
  129. }, 100);
  130. unit.form.mainfrm.OnSend('springSave ' + model.getCurrentDirectory());
  131. }
  132. }
  133. function OnSpring(){
  134. unit.form.mainfrm.OnSend('springHightLight ' + ui.pb_x.value + ' ' + ui.pb_y.value + ' ' + ui.pb_z.value + ' ' + ui.pb_X.value + ' ' + ui.pb_Y.value + ' ' + ui.pb_Z.value + ' ' + ui.stiffness_x.value + ' ' + ui.stiffness_y.value + ' ' + ui.stiffness_z.value + ' ' + ui.pb_R.value + ' ' + ui.pb_G.value + ' ' + ui.pb_B.value + ' ' + ui.pb_type1.value + ui.pb_type2.value);
  135. unit.form.mainfrm.OnChangePicture(3, 2);
  136. //unit.form.mainfrm.OnCueline('<h4 style="font-family:arial;color: green;font-size:20px;">恭喜您完成了弹簧约束的添加!</h4>');
  137. let Load = {
  138. "非约束类型":ui.misConstraints.value,
  139. "起点x":ui.pb_x.value,
  140. "起点y":ui.pb_y.value,
  141. "起点z":ui.pb_z.value,
  142. "终点x":ui.pb_X.value,
  143. "终点y":ui.pb_Y.value,
  144. "终点z":ui.pb_Z.value,
  145. "弹簧刚度x":ui.stiffness_x.value,
  146. "弹簧刚度y":ui.stiffness_y.value,
  147. "弹簧刚度z":ui.stiffness_z.value,
  148. "R":ui.R.value,
  149. "G":ui.G.value,
  150. "B":ui.B.value
  151. };
  152. unit.form.tree.CreateBoundary(Load);
  153. unit.form.mainfrm.OnCueline('您完成了弹簧约束的添加!', 'green');
  154. }
  155. function OnBeam(){
  156. unit.form.mainfrm.OnSend('beamHightLight ' + ui.pb_size.value + ' ' + ui.pb_length.value + ' ' + ui.pb_xDiration.value + ' ' + ui.pb_yDiration.value + ' ' + ui.pb_zDiration.value + ' ' + ui.pb_xCoord.value + ' ' + ui.pb_yCoord.value + ' ' + ui.pb_zCoord.value + ' ' + ui.rad.value + ' ' + ui.m.value + ' ' + ui.poi.value + ' ' + ui.R.value + ' '+ ui.G.value + ' ' + ui.B.value + ' ' + ui.pb_node_size.value);
  157. unit.form.mainfrm.OnChangePicture(3, 2);
  158. //unit.form.mainfrm.OnCueline('<h4 style="font-family:arial;color: green;font-size:20px;">恭喜您完成了梁约束的添加!</h4>');
  159. let Load = {
  160. "非约束类型":ui.misConstraints.value,
  161. "梁约束位置xDirection":ui.pb_xDiration.value,
  162. "梁约束位置yDirection":ui.pb_yDiration.value,
  163. "梁约束位置zDirection":ui.pb_zDiration.value,
  164. "梁约束位置xCoord":ui.pb_xCoord.value,
  165. "梁约束位置yCoord":ui.pb_yCoord.value,
  166. "梁约束位置zCoord":ui.pb_zCoord.value,
  167. "梁约束参数半径":ui.rad.value,
  168. "梁约束参数长度":ui.pb_length.value,
  169. "梁约束参数个数":ui.pb_size.value,
  170. "弹性模量":ui.m.value,
  171. "泊松比":ui.poi.value,
  172. "梁节点大小半径":ui.pb_node_size.value,
  173. "R":ui.R.value,
  174. "G":ui.G.value,
  175. "B":ui.B.value
  176. };
  177. unit.form.tree.CreateBoundary(Load);
  178. unit.form.mainfrm.OnCueline('您完成了梁约束的添加!', 'green');
  179. }
  180. function control(idx){
  181. ui.pb_start.enable = !idx;
  182. ui.pb_x.enable = idx;
  183. ui.pb_y.enable = idx;
  184. ui.pb_z.enable = idx;
  185. ui.pb_end.enable = idx;
  186. ui.pb_X.enable = !idx;
  187. ui.pb_Y.enable = !idx;
  188. ui.pb_Z.enable = !idx;
  189. if(idx === true){
  190. model.setStartEnd(0);
  191. }
  192. if(idx === false){
  193. model.setStartEnd(1);
  194. }
  195. }
  196. function OnEed(){
  197. control(false);
  198. }
  199. function OnStart(){
  200. control(true);
  201. }
  202. function OnChangeMenu(){
  203. ui.stack_menu.index = parseFloat(ui.misConstraints.index);
  204. if(ui.stack_menu.index === 3){
  205. model.setBeam(true);
  206. }else{
  207. model.setBeam(false);
  208. }
  209. }
  210. function OnChangeConstraint(idx){
  211. ui.stack_constraint.index = parseFloat(idx);
  212. /*if(parseFloat(idx) === 1){
  213. unit.form.mainfrm.OnChangePicture(3, 1);
  214. unit.form.mainfrm.OnCueline('<h4 style="font-family:arial;color: Blue;font-size:20px;">注意事项:弹簧单元的起点和终点需要自动添加,鼠标右键选中起始/终止点,点击按钮(在窗口左侧倒数第5个按钮)添加即可将坐标导入!</h4>');
  215. }else if(parseFloat(idx) === 2){
  216. unit.form.mainfrm.OnChangePicture(3, 1);
  217. unit.form.mainfrm.OnCueline('<h4 style="font-family:arial;color: Blue;font-size:20px;">注意事项:连接单元的起点和终点需要自动添加,鼠标右键选中起始/终止点,点击按钮(在窗口左侧倒数第5个按钮)添加即可将坐标导入!</h4>');
  218. }else if(parseFloat(idx) === 3){
  219. unit.form.mainfrm.OnChangePicture(3, 1);
  220. unit.form.mainfrm.OnCueline('<h4 style="font-family:arial;color: Blue;font-size:20px;">注意事项:非均匀梁的各个节点需要用鼠标右键拾取后点击H或h进行保存,梁上的各个点需要在一条直线上!</h4>');
  221. }*/
  222. if(parseFloat(idx) === 1){
  223. unit.form.mainfrm.OnChangePicture(3, 1);
  224. unit.form.mainfrm.OnCueline('注意事项:弹簧单元的起点和终点需要自动添加,鼠标右键选中起始/终止点,点击按钮(在窗口左侧倒数第3个按钮)添加即可将坐标导入!', 'blue');
  225. }else if(parseFloat(idx) === 2){
  226. unit.form.mainfrm.OnChangePicture(3, 1);
  227. unit.form.mainfrm.OnCueline('注意事项:连接单元的起点和终点需要自动添加,鼠标右键选中起始/终止点,点击按钮(在窗口左侧倒数第3个按钮)添加即可将坐标导入!', 'blue');
  228. }else if(parseFloat(idx) === 3){
  229. unit.form.mainfrm.OnChangePicture(3, 1);
  230. unit.form.mainfrm.OnCueline('注意事项:非均匀梁的各个节点需要用鼠标右键拾取后点击H或h进行保存,梁上的各个点需要在一条直线上!', 'blue');
  231. }
  232. }
  233. //The message corresponding callback executed by the docker pane.
  234. // when calling [side_pane].fireEvent(type,para) in the main form.
  235. function OnParentDockerMessage(type, para) {
  236. }
  237. //////////////////////////////////////////////////////////////////////////
  238. // Utils Functions.
  239. // 6c165ad6-ef3e-11ea-987c-b761a131c2fe
  240. CW_DeclareVariable("pb_x",
  241. val => {
  242. ui.pb_x.value = val;
  243. ui.pb_start_x.value = val;
  244. }, () => {});
  245. CW_DeclareVariable("pb_y",
  246. val => {
  247. ui.pb_y.value = val;
  248. ui.pb_start_y.value = val;
  249. }, () => {});
  250. CW_DeclareVariable("pb_z",
  251. val => {
  252. ui.pb_z.value = val;
  253. ui.pb_start_z.value = val;
  254. }, () => {});
  255. CW_DeclareVariable("pb_X",
  256. val => {
  257. ui.pb_X.value = val;
  258. ui.pb_end_x.value = val;
  259. }, () => {});
  260. CW_DeclareVariable("pb_Y",
  261. val => {
  262. ui.pb_Y.value = val;
  263. ui.pb_end_y.value = val;
  264. }, () => {});
  265. CW_DeclareVariable("pb_Z",
  266. val => {
  267. ui.pb_Z.value = val;
  268. ui.pb_end_z.value = val;
  269. }, () => {});
  270. CW_DeclareVariable("listbox",
  271. val => {
  272. ui.listbox.list = [
  273. val
  274. ];
  275. }, () => {});
  276. CW_DeclareVariable("start_mes",
  277. val => {
  278. ui.pb_type1.value = val;
  279. ui.pb_start_mes.value = val;
  280. }, () => {});
  281. CW_DeclareVariable("end_mes",
  282. val => {
  283. ui.pb_type2.value = val;
  284. ui.pb_end_mes.value = val;
  285. }, () => {});
  286. function onDragFile(filepath) {
  287. }
  288. function PUI(cb) {
  289. if(pui){cb();}
  290. }
  291. /*Usage of BLOCK_EVENT
  292. BLOCK_EVENT(()=>{
  293. ui.[name].[var] = ...;
  294. });
  295. */
  296. function BLOCK_EVENT(cb) {
  297. ui.block_event = true;
  298. cb();
  299. ui.block_event = false;
  300. }
  301. //////////////////////////////////////////////////////////////////////////
  302. // template codes for cw callback js.
  303. function CW_DeclareVariable(name, setter, getter) {
  304. if(typeof(__DeclareVariable) === 'function') {
  305. __DeclareVariable(name, setter, getter);
  306. }
  307. }
  308. function CW_DeclareOuterVariable(name) {
  309. if(typeof(__DeclareOuterVariable) === 'function') {
  310. __DeclareOuterVariable(name);
  311. }
  312. }