TCL: how to translate coordinates from a system to another?

Stéphane Combet
Stéphane Combet Altair Community Member
edited November 2023 in Community Q&A

Hello,

Being new to tcl, I manage to get coordinates of grid selected by user with *createmarkpanel and hm_nodevalue.

What about translating coordinates in another coordinate system? Is that implemented in a given function or should I write a script for that?

Thank you!

 

Tagged:

Welcome!

It looks like you're new here. Sign in or register to get started.

Answers

  • Michael Herve
    Michael Herve
    Altair Employee
    edited November 2023
    Hello again @Stéphane Combet,

    Do you want to apply translation of a node selection along the axis of a user-defined system?

    If so, *translatemark request a vector. You can retrieve the command to create this vector from command.tcl.

    Then for getting the direction of the system, you may query for system attributes through hm_getvalue

    The attributes for a given entity can be retrieved in online help (search for data name) or from Matrix Browser, see below an exemple (for materials) from 6:30:

    https://youtu.be/OGRMJLunkrs?si=lW8srqNsmJUlRhBB

    Does it help?

    Michael

  • Stéphane Combet
    Stéphane Combet Altair Community Member
    edited November 2023

    Hello again @Stéphane Combet,

    Do you want to apply translation of a node selection along the axis of a user-defined system?

    If so, *translatemark request a vector. You can retrieve the command to create this vector from command.tcl.

    Then for getting the direction of the system, you may query for system attributes through hm_getvalue

    The attributes for a given entity can be retrieved in online help (search for data name) or from Matrix Browser, see below an exemple (for materials) from 6:30:

    https://youtu.be/OGRMJLunkrs?si=lW8srqNsmJUlRhBB

    Does it help?

    Michael

    Thank you Michael,

    Not sure this helps. What I want is not to move the node. But a given node being placed at (0,0,0) in global coordinate system, if I have another rectangular system placed at (1,1,1) parallel to the global one, the coordinates of the very same node are (-1,-1,-1). 

    I wonder if there is a function to get those coordinates of a node in such another system (my case being obviously more complex with systems not parallel to global one).

    If not, I will have to code myself the formulas. Feasable, but so boring... :'(

  • Michael Herve
    Michael Herve
    Altair Employee
    edited November 2023

    Thank you Michael,

    Not sure this helps. What I want is not to move the node. But a given node being placed at (0,0,0) in global coordinate system, if I have another rectangular system placed at (1,1,1) parallel to the global one, the coordinates of the very same node are (-1,-1,-1). 

    I wonder if there is a function to get those coordinates of a node in such another system (my case being obviously more complex with systems not parallel to global one).

    If not, I will have to code myself the formulas. Feasable, but so boring... :'(

    Hello again @Stéphane Combet ,

     

    if you want node coordinates in a user defined system, first you need this user system to be assigned to your nodes. This way, you can use the following command:

     

    set localX [hm_getvalue node id=$NodeId dataname=localx]

    set localY [hm_getvalue node id=$NodeId dataname=localy]

    set localZ [hm_getvalue node id=$NodeId dataname=localz]

     

    Is it what you are looking for?

     

    Best Regards,

    Michael Herve

     

  • Stéphane Combet
    Stéphane Combet Altair Community Member
    edited November 2023

    Hello again @Stéphane Combet ,

     

    if you want node coordinates in a user defined system, first you need this user system to be assigned to your nodes. This way, you can use the following command:

     

    set localX [hm_getvalue node id=$NodeId dataname=localx]

    set localY [hm_getvalue node id=$NodeId dataname=localy]

    set localZ [hm_getvalue node id=$NodeId dataname=localz]

     

    Is it what you are looking for?

     

    Best Regards,

    Michael Herve

     

    Thank you! Ok so I could:

    1. assign the user defined system to the node
    2. use the command you gave me to obtain coordinates in user defined system
    3. re-assign previous system to the node

    I will look for a command to assign a system to a node.

  • Michael Herve
    Michael Herve
    Altair Employee
    edited November 2023

    Thank you! Ok so I could:

    1. assign the user defined system to the node
    2. use the command you gave me to obtain coordinates in user defined system
    3. re-assign previous system to the node

    I will look for a command to assign a system to a node.

    Hello @Stéphane Combet ,

     

    your process is correct.

     

    You should be able to use these commands:

    *createmark nodes 1 selection_method

    *systemsetanalysis nodes 1 $systemid

     

    Then to reset you can use: 

    *createmark nodes 1 selection_method

    *systemsetanalysis nodes 1 0

     

     

    Regarding the attributes to query for local coordinates, I need to apologize, here are the correct syntax (I just tested it back this morning):

    set localX [hm_getvalue node id=$NodeId dataname=x]

    set localY [hm_getvalue node id=$NodeId dataname=y]

    set localZ [hm_getvalue node id=$NodeId dataname=z]

    or

    set LocalCoords [hm_getvalue node id=$NodeId dataname=localcoordinates]

    In this second case you get a list with x y and z coordinates.

     

    Best Regards,

    Michael 

     

     

Welcome!

It looks like you're new here. Sign in or register to get started.

Welcome!

It looks like you're new here. Sign in or register to get started.