Jump to content
Piyush4

Get Elements in Tcl Variable (Large no of elements > 6 Lakh)

Recommended Posts

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

Share this post


Link to post
Share on other sites

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]

 

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

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] 

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

Hi @tinh,

 

I have blocked updating "command.tcl" using "hm_commandfilestate 0". But still this thing is not working.

 

My system configuration is :

 

OS : Windows 7 (64-bit)

Processor : Intel(R) Xeon(R) CPU E5-1650v3 @3.50GHz

Ram : 8.00 GB

 

But still not working.

 

Regards

Piyush

Share this post


Link to post
Share on other sites

: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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

tinh likes this

Share this post


Link to post
Share on other sites
1 hour ago, Piyush4 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.

Share this post


Link to post
Share on other sites
1 hour ago, Piyush4 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

 

Share this post


Link to post
Share on other sites

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

tinh likes this

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...