How to create a drop down menu instead of a ribbon

Akash Purushothaman
Akash Purushothaman Altair Community Member
edited August 2023 in Community Q&A

I found a blog on how to create a Button to HyperWorks that Runs a Custom Script.

 

But I am looking to add a dropdown menu instead of a ribbon as shown below.

image

 

Any existing blog or documentation can help..

Thanks in advance

Akash P

Best Answer

  • Ben Buchanan
    Ben Buchanan
    Altair Employee
    edited May 2023 Answer ✓

    If you are using extensions the extension.xml file would look the same as for a ribbon but the xml for the dropdown menu that you reference in the extension.xml file would look something like this:

    <root> 	<actionlist> 		<action tag="uniqueActionTag" text="text" tooltip="tip" image="image-80.png" command="tcl: ::UniqueNamespace::YourProc"/> 	</actionlist>	 	<page tag="Your_Menu_Page" text="Menu Fun"> 		<menu tag="Your_Menu_Menu"> 			<actiongroup tag="Your_Menu_Group" text="groupText"> 				<action actiontag="uniqueActionTag"/> 			</actiongroup> 		</menu> 	</page> </root>

    I am working on a blog that goes over this and there are videos being created also.

Answers

  • Ben Buchanan
    Ben Buchanan
    Altair Employee
    edited May 2023 Answer ✓

    If you are using extensions the extension.xml file would look the same as for a ribbon but the xml for the dropdown menu that you reference in the extension.xml file would look something like this:

    <root> 	<actionlist> 		<action tag="uniqueActionTag" text="text" tooltip="tip" image="image-80.png" command="tcl: ::UniqueNamespace::YourProc"/> 	</actionlist>	 	<page tag="Your_Menu_Page" text="Menu Fun"> 		<menu tag="Your_Menu_Menu"> 			<actiongroup tag="Your_Menu_Group" text="groupText"> 				<action actiontag="uniqueActionTag"/> 			</actiongroup> 		</menu> 	</page> </root>

    I am working on a blog that goes over this and there are videos being created also.

  • Akash Purushothaman
    Akash Purushothaman Altair Community Member
    edited May 2023

    If you are using extensions the extension.xml file would look the same as for a ribbon but the xml for the dropdown menu that you reference in the extension.xml file would look something like this:

    <root> 	<actionlist> 		<action tag="uniqueActionTag" text="text" tooltip="tip" image="image-80.png" command="tcl: ::UniqueNamespace::YourProc"/> 	</actionlist>	 	<page tag="Your_Menu_Page" text="Menu Fun"> 		<menu tag="Your_Menu_Menu"> 			<actiongroup tag="Your_Menu_Group" text="groupText"> 				<action actiontag="uniqueActionTag"/> 			</actiongroup> 		</menu> 	</page> </root>

    I am working on a blog that goes over this and there are videos being created also.

    Thank you! 

    It works! Waiting for the blog to learn more about this!

  • Akash Purushothaman
    Akash Purushothaman Altair Community Member
    edited May 2023

    If you are using extensions the extension.xml file would look the same as for a ribbon but the xml for the dropdown menu that you reference in the extension.xml file would look something like this:

    <root> 	<actionlist> 		<action tag="uniqueActionTag" text="text" tooltip="tip" image="image-80.png" command="tcl: ::UniqueNamespace::YourProc"/> 	</actionlist>	 	<page tag="Your_Menu_Page" text="Menu Fun"> 		<menu tag="Your_Menu_Menu"> 			<actiongroup tag="Your_Menu_Group" text="groupText"> 				<action actiontag="uniqueActionTag"/> 			</actiongroup> 		</menu> 	</page> </root>

    I am working on a blog that goes over this and there are videos being created also.

    With the classic version of Hypermesh/Hyperview, we create menu using TCL commands. Is it possible to achieve the same in the HyperworksX version @Ben Buchanan ?

  • Ben Buchanan
    Ben Buchanan
    Altair Employee
    edited May 2023

    With the classic version of Hypermesh/Hyperview, we create menu using TCL commands. Is it possible to achieve the same in the HyperworksX version @Ben Buchanan ?

    Yes, you can still do it that way as far as I know. Extensions I feel have a lot of advantages. Such as:

    • ease of loading/unloading and turning on/off (no more messing with the hmcustom.tcl file)
    • can have any number of extension active at a time
    • seamless inclusion in GUI
    • quickly and easily do a ribbon, dropdown menu or toolbar (take existing example plug in your values)
    • etc..

    Just some of my thoughts.

    Here are some current articles about extensions and some extensions available on the exchange.

    https://help.altair.com/hwdesktop/hwd/topics/reference/extensions/extensions_r.htm 

    https://community.altair.com/community?id=kb_article&sysparm_article=KB0120189 

    https://community.altair.com/community?id=kb_article&sysparm_article=KB0121742 

    https://community.altair.com/community?id=kb_article&sysparm_article=KB0121665 

  • Akash Purushothaman
    Akash Purushothaman Altair Community Member
    edited June 2023

    Yes, you can still do it that way as far as I know. Extensions I feel have a lot of advantages. Such as:

    • ease of loading/unloading and turning on/off (no more messing with the hmcustom.tcl file)
    • can have any number of extension active at a time
    • seamless inclusion in GUI
    • quickly and easily do a ribbon, dropdown menu or toolbar (take existing example plug in your values)
    • etc..

    Just some of my thoughts.

    Here are some current articles about extensions and some extensions available on the exchange.

    https://help.altair.com/hwdesktop/hwd/topics/reference/extensions/extensions_r.htm 

    https://community.altair.com/community?id=kb_article&sysparm_article=KB0120189 

    https://community.altair.com/community?id=kb_article&sysparm_article=KB0121742 

    https://community.altair.com/community?id=kb_article&sysparm_article=KB0121665 

    I understand the advantages of using extensions.

    Thank you for your explanation and examples as it is really helpful.

    But for some special cases of my TCL scripts, I would also like to understand how to create a menu by using only the TCL commands similar to classic version. Is there any references that I can get for that?

  • Ajay Prabhakaran
    Ajay Prabhakaran Altair Community Member
    edited July 2023

    If you are using extensions the extension.xml file would look the same as for a ribbon but the xml for the dropdown menu that you reference in the extension.xml file would look something like this:

    <root> 	<actionlist> 		<action tag="uniqueActionTag" text="text" tooltip="tip" image="image-80.png" command="tcl: ::UniqueNamespace::YourProc"/> 	</actionlist>	 	<page tag="Your_Menu_Page" text="Menu Fun"> 		<menu tag="Your_Menu_Menu"> 			<actiongroup tag="Your_Menu_Group" text="groupText"> 				<action actiontag="uniqueActionTag"/> 			</actiongroup> 		</menu> 	</page> </root>

    I am working on a blog that goes over this and there are videos being created also.

    Hello Ben ,

    Do you know how can we create dropdown for Hyperworks in Client Hyperview. As i tried using extension you have defined here. But for Hyperview its not working. Can you guide me how can i create dropdown for Hyperview. ?

     

  • Ben Buchanan
    Ben Buchanan
    Altair Employee
    edited August 2023

    Hello Ben ,

    Do you know how can we create dropdown for Hyperworks in Client Hyperview. As i tried using extension you have defined here. But for Hyperview its not working. Can you guide me how can i create dropdown for Hyperview. ?

     

    I just completed another blog for the new version of extensions and it touches on creating a dropdown for Hyperview.

    https://community.altair.com/community?id=community_blog&sys_id=f497a24b97d87d10e3b0361e6253aff9

    Hope that helps.

  • Ben Buchanan
    Ben Buchanan
    Altair Employee
    edited August 2023

    I understand the advantages of using extensions.

    Thank you for your explanation and examples as it is really helpful.

    But for some special cases of my TCL scripts, I would also like to understand how to create a menu by using only the TCL commands similar to classic version. Is there any references that I can get for that?

    I found the following that will at least help you get started:

    proc ::int_Menu::Main { } { 	variable str_scriptpath; 	if {[::HM_Framework::RunningUnityFramework]} { 		set str1 [hm_info -appinfo ALTAIR_HOME] 		set pyexe [file join $str1 ".." "common" "python" "python3.5" "win64" "python.exe"] 		 		set str_menuName "Menu Name" 		# puts $str_menuName 		::int_Menu::createandloadxml $str_menuName 	} } proc ::int_Menu::createandloadxml {str_menuName } { 		variable str_scriptpath;  		set csv "int_Menu.csv" 		set filename [file join $str_scriptpath "$csv"] 		set xmlfile "int_Menu.xml" 		 		 		set str1 [hm_info -appinfo ALTAIR_HOME] 		set strOS [string tolower $::tcl_platform(os)];  		if {[string first "win" $strOS]!= -1} { 			set xmlfilepath [pwd] 			set pyexe [file join [file dirname $str1] "common" "python" "python3.8" "win64" "python.exe"] 			puts "pyexe - $pyexe" 		} else {             set xmlfilepath $str_scriptpath             set pyexe [file join [file dirname $str1] "common" "python" "python3.8" "linux64" "bin" "python"]  		} 		set c [catch {exec $pyexe [file join $str_scriptpath read_tool_csv.py] $xmlfilepath $filename $xmlfile $str_menuName}] 		# exec $pyexe [file join $str_scriptpath read_tool_csv.py] $xmlfilepath $filename $xmlfile $str_menuName 		 		set strname [join [list "HMX_" [regsub {[-]} $str_menuName ""] "MenuPage"] ""] 		if {$c == 0} { 			::hwf::ribbonpage remove $strname 			::hwf::ribbonpage add [file join $xmlfilepath $xmlfile] 			puts "Done loading $str_menuName" 		} else { 			puts "some error while loading custom dropdown menus" 		} } 
  • Ajay Prabhakaran
    Ajay Prabhakaran Altair Community Member
    edited August 2023

    I just completed another blog for the new version of extensions and it touches on creating a dropdown for Hyperview.

    https://community.altair.com/community?id=community_blog&sys_id=f497a24b97d87d10e3b0361e6253aff9

    Hope that helps.

    Thank you Ben for the clear explanation. Its working for me now.

    But there is a small blocking point. After creating the extension.xml, users have to load the extension manually from File -> Extension -> Add extension.

    I understood that adding extension is a one time job. But i would like to automate that aswell. Do you have any api in hyperworks to load the extension? It would be really helpful for me if you can guide me on that too.

     

    Right now i am manually loading the extension following the picture below :

    image

     

    Or i just have another question: Is it possible to load the extension.xml from a default directory everytime rather that loading the extension manually??

  • Ben Buchanan
    Ben Buchanan
    Altair Employee
    edited August 2023

    Thank you Ben for the clear explanation. Its working for me now.

    But there is a small blocking point. After creating the extension.xml, users have to load the extension manually from File -> Extension -> Add extension.

    I understood that adding extension is a one time job. But i would like to automate that aswell. Do you have any api in hyperworks to load the extension? It would be really helpful for me if you can guide me on that too.

     

    Right now i am manually loading the extension following the picture below :

    image

     

    Or i just have another question: Is it possible to load the extension.xml from a default directory everytime rather that loading the extension manually??

    In HW 2022.3 the HWX_PLUGINS environment variable can be used to do this. See #6 in the following help page:

    https://help.altair.com/hwdesktop/hwd/topics/reference/extensions/extensions_add_t.htm

    I don't know of a way to do this in the previous versions.