Get Elements in Tcl Variable (Large no of elements > 6 Lakh)
Hi,
I am trying to get all elements of a component in a Tcl variable (Elements Count > 6 Lakh) and Hypermesh is taking too long (~ 1 hours) and ends with a not responding error message.
eg. catch {unset all_component_elements};
hm_markclearall 1;
hm_markclearall 2;
*rejectclear;
*clearmark elems 1
hm_markclear elems 1;
*createmark elems 1 'by comp' $comp
set all_component_elements [hm_getmark elems 1];
Is there any other method to retrieve these elements inside Tcl variables.
I need to use this logic inside Tcl Script/Macro.
Thanks in Advance, for help.
Regards
Piyush
Answers
-
How many elements do you have within this component?
0 -
Hi,
I think it was slow due to this command:
*createmark elems 1 'by comp' $comp
because it will highlight elements.
From version 13 please try this command (avoid using commands with * prefix)
set all_component_elements [hm_getvalue comps name=$comp dataname=elements]
0 -
Hi,
@Q.Nguyen-Dai Elements Count in component is more than 6 lakh (~ 6,75,000).
@tinh I have tried with 'hm_' commands also. But still the result is same.
Either, I am using '*createmark elems 1 'by comp' $comp' or not, this command is not taking time.
set all_component_elements [hm_getvalue comps name=$comp dataname=elements] ## This command anyhow is taking too much time (~50 minutes).
I have tried other 'hm_ ' commands too , but no change.
Thanks & Regards
Piyush
0 -
ah,
Please go to folder My Documents and delete files command.cmf and/or command.tcl
I guess this file is too big.
And don't output to that file:
hm_commandfilestate 0 set all_component_elements [hm_getvalue comps name=$comp dataname=elements]
0 -
Hi,
@tinh I have already tried deleting files in My Documents.
The File size is not big (~ 1 KB only).
But still the time taken is same and Hypermesh is going into not-responding state.
Is there any other method to access HM database and get all elements of a component (Element Count > 6 Lakh)
Thanks & Regards
Piyush
0 -
did you try 'hm_commandfilestate 0' before getting elements?
If element count is huge, maybe the only way is upgrade your RAM or Graphic card
Could you show your computer hardware information?
0 -
-
how's about graphic card?
0 -
Share you HM model?
0 -
0
-
/emoticons/default_rolleyes.gif' title=':rolleyes:' /> maybe, a local unit!
anyway, it is not a big number.
I just realize that if he typed the commands into command window then it is a big problem because buffer of tkcon is limited!
@Piyush4 could you copy your code to a tcl file and run it, or add a 'puts ok' command at the end, then copy the codes to command window, it will put only 'ok' instead of tons of characters
like this:
set all_component_elements [hm_getvalue comps name=$comp dataname=elements]; puts ok
do not type puts ok on new line, so tkcon will evaluate and print out only last command
0 -
Hi
@tinh Graphic Card configuration : 2GB Nvidia
I am running commands using Tcl File only ie I am creating script / macro.
Your direction of tkcon buffer was really helpful. Its working in most of the cases which slows down my script execution in Hypermesh.
@Q.Nguyen-Dai Sorry, but I can't share model, that's Confidential Property of Company.
'Lakh' is a unit in the Indian numbering system equal to one hundred thousand (100,000; scientific notation: 105).
I need to convey that Element Count in Model / No of Elements = 675000
Moreover, I got suggestion for using '::hwat::utils::CreateMark'. This can also help ???
Thanks & Regards
Piyush
0 -
Did you try running my below suggested command?
set all_component_elements [hm_getvalue comps name=$comp dataname=elements]; puts ok
even if you run it by sourcing file, source command will return the value of the last command in tcl file, and if it is called from tkcon, buffer will be tired.
I tested with normal computer, it take about just half of second for 1million elems.
Another probability, your tcl file has problem elsewhere, please show us your tcl file content
0 -
Hi @tinh
I am really thankful for your suggestion. It worked for me.
Sorry to say but I cannot share tcl file content or any model content, as it is under confidential proprietory of Company.
I just need to know using '::hwat::utils::CreateMark' can also work for such problems ?
Regards
Piyush
0 -
Altair Forum User said:
Hi
@Q.Nguyen-Dai Sorry, but I can't share model, that's Confidential Property of Company.
'Lakh' is a unit in the Indian numbering system equal to one hundred thousand (100,000; scientific notation: 105).
I need to convey that Element Count in Model / No of Elements = 675000
Moreover, I got suggestion for using '::hwat::utils::CreateMark'. This can also help ???
Thanks & Regards
Piyush
Why write 'local numbering' in English post?
675000 elements is NOT big model.
0 -
0
-
Altair Forum User said:
Hi @tinh
I am really thankful for your suggestion. It worked for me.
Sorry to say but I cannot share tcl file content or any model content, as it is under confidential proprietory of Company.
I just need to know using '::hwat::utils::CreateMark' can also work for such problems ?
Regards
Piyush
So, can we conclude the reason is finally due to ouput too much data to tkcon command window?
=> you do not to show your tcl file any more.
Yes, hwat::utils::CreateMark can work, same with hm_createmark, they are just tcl procs that call to hm command *createmark
But the arguments may be different. please check reference guide
0 -
Yes , the lack in running script was due to streaming of Large Data to tkcon command window.
It can be resolved by adding command like ;puts ' ' or ;puts ok in the same line (line which is slowing down the process).
This would help not to display the whole data of previous command and the tcl variable can be easily populated with values (with no delay).
Regards
Piyush
0