# hm toolbars

## Recommended Posts

Hi all.

i made some hypermesh macros in form of "toolbar"

##### Share on other sites

Congratulations,it really looks so interesting

##### Share on other sites

Interesting! But if you could share us how to do that, it's even more interesting

##### Share on other sites

Interesting! But if you could share us how to do that, it's even more interesting

Hiii Mr.Quy

to measure (diameter, surf-surf distance, ...) => click on corresponding toolbar buttons

pick a circle => it shows diameter and radius

pick 2 surfs => it shows distance

pick a surf then a line => it shows distance,

...

i add options to measure distance at closest position or picking position (ex. if in case 2 surfs or surf-line are not parallel)

##### Share on other sites

No, I'm speaking about ...  TCL script, not its usage

##### Share on other sites

it's a secret!

i'll give a brief explain (actually difficult to explain fully in english, i am sorry)

- diameter measure: i used only command hm_getbestcircle, it return diameter value directly just in one click

- surf-surf measure: when click on surf, it creates a node at clicking position, the node then projected to alternative surf, projecting direction is not normal to the surf but make equally angle with each surf (so in case 2 surfs not parallel then => get correct distance)

- surf-line measure: similar to surf-surf, but temp node will be created on line, it then projected normally to surf (to find normal distance) and hm_getdistancefromnearest on surf to get true distance

- line-line measure: similar to surf-surf, but after temp node created on a line, a closest position from it on the alternative line will be get (hm_getdistancefromnearest)

- segment-segment (used when measuring height of a bead): i do some vector operations to find common perpendicular line of the two segment, length of it is distance between 2 segments, with option "extended closest postion" then this value is reported, in case of "closest position" it is compared to relative position between 2 segments ( as edge-to-edge contact calculation)

flamenco7641 likes this

##### Share on other sites

Thank you!

I'm looking for a sample code to create a customized toolbar like yours. I searched within HM's documents but I found nothing for this moment

##### Share on other sites

Hii Mr.Quy

below is code to make my toolbar

actually create toolbar can be done as in "hmsettings.tcl" file. but i modify something to fix errors when starting hm or first invoking to the functions

```
proc ::nvtb:_DestroyToolBar {ToolBarName} {
if {[winfo exists ._ViviToolBar-\$ToolBarName]} {
destroy ._ViviToolBar-\$ToolBarName
}
foreach window [winfo children .] {
if {[string match *.minibartoplevel* \$window]} {
foreach window2 [winfo children \$window] {
if {[string match *ViviToolBar-\$ToolBarName* \$window2]} {
destroy \$window
break
}
}
}
}
}
proc ::nvtb:_CreateMeasurementToolBar {} {
::HM_Framework:_CreateMinibar . ViviToolBar-Measurement HyperMesh:HyperMesh:_blank
::HM_Framework:_SetMinibarIconList ViviToolBar-Measurement [list \
[list [list p_CreateMinibarIcon [file join \$::nvtb::v_ImageDir MeasureCircleDiameter-24.png 	] "if {!\[namespace exists ::nvtb\]} {source \"\$::nvtb::v_InfoScript\"; ::nvtb:_MeasureCircleDiameter   } else {::nvtb:_MeasureCircleDiameter   }" {Circle Diameter} 1]	] \
[list [list p_CreateMinibarIcon [file join \$::nvtb::v_ImageDir MeasureDistanceSurfSurf-24.png 	] "if {!\[namespace exists ::nvtb\]} {source \"\$::nvtb::v_InfoScript\"; ::nvtb:_MeasureDistanceSurfSurf } else {::nvtb:_MeasureDistanceSurfSurf }" {Surf-Surf Distance} 1]	] \
[list [list p_CreateMinibarIcon [file join \$::nvtb::v_ImageDir MeasureDistanceSurfLine-24.png 	] "if {!\[namespace exists ::nvtb\]} {source \"\$::nvtb::v_InfoScript\"; ::nvtb:_MeasureDistanceSurfLine } else {::nvtb:_MeasureDistanceSurfLine }" {Surf-Line Distance} 1]	] \
[list [list p_CreateMinibarIcon [file join \$::nvtb::v_ImageDir MeasureDistanceLineLine-24.png 	] "if {!\[namespace exists ::nvtb\]} {source \"\$::nvtb::v_InfoScript\"; ::nvtb:_MeasureDistanceLineLine } else {::nvtb:_MeasureDistanceLineLine }" {Line-Line Distance} 1]	] \
[list [list p_CreateMinibarIcon [file join \$::nvtb::v_ImageDir MeasureDistanceSegmSegm-24.png 	] "if {!\[namespace exists ::nvtb\]} {source \"\$::nvtb::v_InfoScript\"; ::nvtb:_MeasureDistanceSegmSegm } else {::nvtb:_MeasureDistanceSegmSegm }" {Segment-Segment Distance} 1]	] \
[list [list p_CreateMinibarIcon options-24.png 													  "if {!\[namespace exists ::nvtb\]} {source \"\$::nvtb::v_InfoScript\"; ::nvtb:_Options                 } else {::nvtb:_Options                 }" {Options} 1													]	] \
]
set ::HM_Framework::Minibar::ViviToolBar-Measurement:_status 1
}
if {[catch {\$menu index ViviToolBar-\${ToolBarName}}]} {
-indicatoron 1 \
-offvalue 0 \
-onvalue 1 \
-variable ::HM_Framework::Minibar::ViviToolBar-\${ToolBarName}:_status \
-command "::HM_Framework:_ToggleMinibar ViviToolBar-\${ToolBarName}" \
-label ViviToolBar-\${ToolBarName} \
-underline 0
return 0
} else {
return 1
}
}```

##### Share on other sites

Hi tinh,

Thank you so much for sharing it with us

##### Share on other sites

Thank you so much Tinh!

##### Share on other sites

Hi.. Would you please send me the code.. suresh.babuks@gmail.com

##### Share on other sites

Thanks for sharing.. Is this the complete code??

##### Share on other sites

Thanks for sharing.. Is this the complete code??

Hi, below is complete code, after some persons used, i fix some bugs

now already 4 persons use it

If you like, please send me your MCID, i just want to record number of users

##### Share on other sites

Hi tinh,

What is the MCID?

and when i try to run this script it is also saying "COULD NOT VERIFY MCID".

What should i do?

Reg

Karthi

##### Share on other sites
On 26/12/2014 at 5:26 PM, Karthi keyan said:

Hi tinh,

What is the MCID?

and when i try to run this script it is also saying "COULD NOT VERIFY MCID".

What should i do?

Reg

Karthi

Really? Could you try again with this new updated:

##### Share on other sites

I tried with the updated one also..

It is also coming same

Unexpected Error

##### Share on other sites

Hi all

this second toolbar has auto-detect mesh features and help fast create some element patterns with less picking

##### Share on other sites

Hi all

i finished set of 3 toolbars. Hope new hypermesh version will have new nicelooking ones

##### Share on other sites

It is throwing Error while executing this  script in Hyperworks 12.0

Can you please help me on this .I am trying to call the tcl file which was provided in the zip file

Regards

sri

##### Share on other sites

It is throwing Error while executing this  script in Hyperworks 12.0

Can you please help me on this .I am trying to call the tcl file which was provided in the zip file

Regards

sri

Hi,

could you please inform me what error occurred?

input below command at command window to know detail

set errorInfo

##### Share on other sites

can you please share the macro as tcl file

##### Share on other sites

#created
#varthamanan
proc CreateToolBar { carName jataList } {

#Create Toolbar
::HM_Framework:_CreateMinibar . \$carName;

foreach Data \$jataList {
set iconfile [ lindex \$Data 2 ]
set cmd [ lindex \$Data 1 ]
set name [ lindex \$Data 0 ]
[ list p_CreateMinibarIcon [ file tail \$iconfile ] \$cmd \$name 1 ];
}

#Pack Toolbar

#Destroy

}

proc RedrawWindows { } {
set pos [ hm_getcommandposition ]

if { \$pos == "top" } {
hm_setcommandposition bottom
hm_setcommandposition top
} else {
hm_setcommandposition top
hm_setcommandposition bottom
}
}

set jataList ""
# quick edit panel
set EditIcon "nodesInterpolateOnSurf-24.gif"
set jataList "\$jataList { {Quick Edit} { ::face {args} } \$EditIcon }"
# automesh panel
set MeshIcon "meshLines-32.gif"
set jataList "\$jataList { {AutoMesh} { hm_pushpanel \"automesh\" } \$MeshIcon }"
# check panel
set CheckIcon "check.gif"
set jataList "\$jataList { {Element Checks} { hm_pushpanel \"check elems\" } \$CheckIcon }"
#
# vis button
set MeshIcon "distanceBetweenNodes-24.gif"
set jataList "\$jataList { {Distance} { hm_pushpanel \"distance\" } \$MeshIcon }"
#
# vis button
set MeshIcon "edgesGeneral-24.gif"
set jataList "\$jataList { {Edges} { hm_pushpanel \"edges\" } \$MeshIcon }"
# vis button
set MeshIcon "elem-normal.gif"
set jataList "\$jataList { {Normals} { hm_pushpanel \"normals\" } \$MeshIcon }"
# vis button
set MeshIcon "intersectionGUI.gif"
set jataList "\$jataList { {intersection} { hm_pushpanel \"penetration\" } \$MeshIcon }"
# vis button
set MeshIcon "numbers-24.gif"
set jataList "\$jataList { {Numbers} { hm_pushpanel \"numbers\" } \$MeshIcon }"
# vis button
set MeshIcon "pan.gif"
set jataList "\$jataList { {Translate} { hm_pushpanel \"translate\" } \$MeshIcon }"
# vis button
set MeshIcon "pointsExtractParametric-24.gif"
set jataList "\$jataList { {Project} { hm_pushpanel \"project\" } \$MeshIcon }"
# vis button
set MeshIcon "blankNesting-24.gif"
set jataList "\$jataList { {Reflect} { hm_pushpanel \"reflect\" } \$MeshIcon }"
# vis button
set MeshIcon "gap-24.gif"
set jataList "\$jataList { {Replace} { hm_pushpanel \"replace\" } \$MeshIcon }"
# vis button
set MeshIcon "erase-16.gif"
set jataList "\$jataList { {Edit elements} { hm_pushpanel \"edit element\" } \$MeshIcon }"
# vis button
set MeshIcon "objectives.gif"
set jataList "\$jataList { {Replace} { hm_pushpanel \"split\" } \$MeshIcon }"
#
# vis button
set MeshIcon "linesExtractEdge-24.gif"
set jataList "\$jataList { {Smooth} { hm_pushpanel \"smooth\" } \$MeshIcon }"
#
# vis button
set MeshIcon "linesOffsetConstant-24.gif"
set jataList "\$jataList { {node edit} { hm_pushpanel \"node edit\" } \$MeshIcon }"
#
# vis button
set jataList "\$jataList { {node edit} { hm_pushpanel \"ruled\" } \$MeshIcon }"
#
# vis button
set MeshIcon "3dElements-24.gif"
set jataList "\$jataList { {node edit} { hm_pushpanel \"drag\" } \$MeshIcon }"
#
# vis button
set MeshIcon "solidDragLine-24.gif"
set jataList "\$jataList { {node edit} { hm_pushpanel \"solid map\" } \$MeshIcon }"
#
# vis button
set MeshIcon "morphingVolume-16.gif"
set jataList "\$jataList { {node edit} { hm_pushpanel \"HyperMorph\" } \$MeshIcon }"

proc ::face {args} {
hm_saveusermark elems 1;
*appendmark elements 1 "retrieve"
hm_highlightmark elems 1 h;
}
# create toolbar
catch { ::HM_Framework:_DeleteMinibar CustomToolBar }
CreateToolBar fanels \$jataList

# redraw window
RedrawWindows

##### Share on other sites

#created
#varthamanan
proc CreateToolBar { carName jataList } {

#Create Toolbar
::HM_Framework:_CreateMinibar . \$carName;

foreach Data \$jataList {
set iconfile [ lindex \$Data 2 ]
set cmd [ lindex \$Data 1 ]
set name [ lindex \$Data 0 ]
[ list p_CreateMinibarIcon [ file tail \$iconfile ] \$cmd \$name 1 ];
}

#Pack Toolbar

#Destroy

}

proc RedrawWindows { } {
set pos [ hm_getcommandposition ]

if { \$pos == "top" } {
hm_setcommandposition bottom
hm_setcommandposition top
} else {
hm_setcommandposition top
hm_setcommandposition bottom
}
}

set jataList ""
# quick edit panel
set EditIcon "nodesInterpolateOnSurf-24.gif"
set jataList "\$jataList { {Quick Edit} { ::face {args} } \$EditIcon }"
# automesh panel
set MeshIcon "meshLines-32.gif"
set jataList "\$jataList { {AutoMesh} { hm_pushpanel \"automesh\" } \$MeshIcon }"
# check panel
set CheckIcon "check.gif"
set jataList "\$jataList { {Element Checks} { hm_pushpanel \"check elems\" } \$CheckIcon }"
#
# vis button
set MeshIcon "distanceBetweenNodes-24.gif"
set jataList "\$jataList { {Distance} { hm_pushpanel \"distance\" } \$MeshIcon }"
#
# vis button
set MeshIcon "edgesGeneral-24.gif"
set jataList "\$jataList { {Edges} { hm_pushpanel \"edges\" } \$MeshIcon }"
# vis button
set MeshIcon "elem-normal.gif"
set jataList "\$jataList { {Normals} { hm_pushpanel \"normals\" } \$MeshIcon }"
# vis button
set MeshIcon "intersectionGUI.gif"
set jataList "\$jataList { {intersection} { hm_pushpanel \"penetration\" } \$MeshIcon }"
# vis button
set MeshIcon "numbers-24.gif"
set jataList "\$jataList { {Numbers} { hm_pushpanel \"numbers\" } \$MeshIcon }"
# vis button
set MeshIcon "pan.gif"
set jataList "\$jataList { {Translate} { hm_pushpanel \"translate\" } \$MeshIcon }"
# vis button
set MeshIcon "pointsExtractParametric-24.gif"
set jataList "\$jataList { {Project} { hm_pushpanel \"project\" } \$MeshIcon }"
# vis button
set MeshIcon "blankNesting-24.gif"
set jataList "\$jataList { {Reflect} { hm_pushpanel \"reflect\" } \$MeshIcon }"
# vis button
set MeshIcon "gap-24.gif"
set jataList "\$jataList { {Replace} { hm_pushpanel \"replace\" } \$MeshIcon }"
# vis button
set MeshIcon "erase-16.gif"
set jataList "\$jataList { {Edit elements} { hm_pushpanel \"edit element\" } \$MeshIcon }"
# vis button
set MeshIcon "objectives.gif"
set jataList "\$jataList { {Replace} { hm_pushpanel \"split\" } \$MeshIcon }"
#
# vis button
set MeshIcon "linesExtractEdge-24.gif"
set jataList "\$jataList { {Smooth} { hm_pushpanel \"smooth\" } \$MeshIcon }"
#
# vis button
set MeshIcon "linesOffsetConstant-24.gif"
set jataList "\$jataList { {node edit} { hm_pushpanel \"node edit\" } \$MeshIcon }"
#
# vis button
set jataList "\$jataList { {node edit} { hm_pushpanel \"ruled\" } \$MeshIcon }"
#
# vis button
set MeshIcon "3dElements-24.gif"
set jataList "\$jataList { {node edit} { hm_pushpanel \"drag\" } \$MeshIcon }"
#
# vis button
set MeshIcon "solidDragLine-24.gif"
set jataList "\$jataList { {node edit} { hm_pushpanel \"solid map\" } \$MeshIcon }"
#
# vis button
set MeshIcon "morphingVolume-16.gif"
set jataList "\$jataList { {node edit} { hm_pushpanel \"HyperMorph\" } \$MeshIcon }"

proc ::face {args} {
hm_saveusermark elems 1;
*appendmark elements 1 "retrieve"
hm_highlightmark elems 1 h;
}
# create toolbar
catch { ::HM_Framework:_DeleteMinibar CustomToolBar }
CreateToolBar fanels \$jataList

# redraw window
RedrawWindows

##### Share on other sites

this is my toolbar  created by most using command

##### Share on other sites

Hi tinh, could you please share this macro with me? It looks very interesting. Do you know if it works with hypermesh 2017?

## Join the conversation

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

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.