{"id":127,"date":"2016-04-26T10:23:06","date_gmt":"2016-04-26T10:23:06","guid":{"rendered":"http:\/\/cadsupport.ru\/en\/?p=127"},"modified":"2019-08-19T11:26:07","modified_gmt":"2019-08-19T11:26:07","slug":"work-tekla-structures-macro-scripts","status":"publish","type":"post","link":"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/","title":{"rendered":"How to work with Tekla Structures Macro scripts"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-106 size-thumbnail\" title=\"Tekla macro script, record script\" src=\"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSmacro-150x150.jpg\" alt=\"Tekla macro script, record script\" width=\"150\" height=\"150\">Tekla Structures allows to record whole user activity to macro script, and then you could play it again and again. This allows to save time on some routine. And if we take in case that Tekla Structures developers loves menus, and submenus, and sub-submenus, &nbsp;and buttons, and&#8230; all this stuff. With bunch of parameters, and applying \/modifying&#8230; so save some clicks would be great idea, and macros really cool thing for this.<\/p>\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Tekla Macro script recording<\/h2>\n\n\n\n<p>To record macro script in Tekla you have to go thought&nbsp;few steps:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Goes to <em>Tools &gt; Macros<\/em> to open Macros dialog.<\/li><li>Type a <strong>Name<\/strong> for a new macro<\/li><li>Push <strong>Record<\/strong> button<\/li><li><em>Do something in Tekla<\/em><\/li><li>To finish record push <strong>Stop<\/strong> button<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSmacro.jpg\" rel=\"lightbox[127]\"><img decoding=\"async\" src=\"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSmacro-150x150.jpg\" alt=\"Tekla macro script, record script\" class=\"wp-image-106\"\/><\/a><figcaption>List of available macros<\/figcaption><\/figure><\/div>\n\n\n\n<p>After that would be created new file with name which you type with .cs extension in folder which is set as default in Tekla Advanced Options &#8211;&nbsp;<strong>XS_MACRO_DIRECTORY<\/strong><\/p>\n\n\n\n<p>So you could find it at that folder, usually path to it could look &nbsp;something like this:<\/p>\n\n\n\n<p><strong>C:\\ProgramData\\Tekla Structures\\19.0\\Environments\\Common\\macros\\<\/strong><\/p>\n\n\n\n<p>To change default folder on something more suitable for your company (usually some common network folder)  you have to replace path in advanced options. You could find these here:<\/p>\n\n\n\n<p><em>Tools &gt; Options &gt; Advanced Options,<\/em><\/p>\n\n\n\n<p>Or use hot key &#8211; &nbsp;<strong><em>ctrl+E<\/em><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Then goes to&nbsp;\u2018File Locations\u2019, &nbsp;and find&nbsp;<strong>XS_MACRO_DIRECTORY<\/strong>&nbsp;line, it contains actual path to yours macro folder.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSadvOptions.jpg\" rel=\"lightbox[127]\"><img decoding=\"async\" src=\"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSadvOptions-300x180.jpg\" alt=\"Tekla Macro script - advanced options, script path\" class=\"wp-image-104\"\/><\/a><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">How to edit Tekla Macro Scripts<\/h2>\n\n\n\n<p>Okay, now we got some macros which was recorded and it make something &#8211; great! But things which has been generated usually not fully satisfies sophisticated requirements. But we could solve this manually, because result of record &#8211; is a text which contains list of actions step by step. So we could modify it with any suitable editor:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>You could use <a href=\"http:\/\/www.visualstudio.com\/ru-ru\">C# Visual Studio<\/a>, Express version would be more than enough.<\/li><li>Visual Studio Code &#8211; also could be nice for these.<\/li><li>As well as <a href=\"http:\/\/notepad-plus-plus.org\/download\/v6.5.5.html\">NotePad++<\/a><\/li><li>Or with default windows notepad.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How Tekla Macro script looks like<\/h2>\n\n\n<p>In common case, right after record it looks something like this:<\/p>\n<div style=\"background: #dddddd; padding: 10px;\"><span style=\"color: #3366ff;\">namespace<\/span> Tekla.Technology.Akit.UserScript {<p><\/p>\n<div style=\"padding-left: 30px;\"><span style=\"color: #3366ff;\">public class<\/span> Script {<br><span style=\"color: #3366ff;\">&nbsp; &nbsp; &nbsp;public static void<\/span> Run(Tekla.Technology.Akit.IScript akit) {<p><\/p>\n<div style=\"padding-left: 30px;\">&nbsp; &nbsp;akit.Callback(<span style=\"color: #993300;\">&#8220;acmd_display_dialog&#8221;<\/span>, <span style=\"color: #993300;\">&#8220;dia_view_dialog&#8221;<\/span>, &#8220;main_frame&#8221;);<br>&nbsp; akit.PushButton(<span style=\"color: #993300;\">&#8220;v1_get&#8221;<\/span>, <span style=\"color: #993300;\">&#8220;dia_view_dialog&#8221;<\/span>);<br>&nbsp; akit.ValueChange(<span style=\"color: #993300;\">&#8220;dia_view_dialog&#8221;<\/span>, <span style=\"color: #993300;\">&#8220;v1_projection&#8221;<\/span>, <span style=\"color: #993300;\">&#8220;1&#8221;<\/span>);<br>&nbsp; akit.PushButton(<span style=\"color: #993300;\">&#8220;v1_modify&#8221;<\/span>,<span style=\"color: #993300;\"> &#8220;dia_view_dialog&#8221;<\/span>);<br>&nbsp; akit.PushButton(<span style=\"color: #993300;\">&#8220;v1_ok&#8221;<\/span>,<span style=\"color: #993300;\"> &#8220;dia_view_dialog&#8221;<\/span>);<br>}<\/div>\n<div>}<\/div>\n<\/div>\n<div>}<\/div>\n<\/div>\n\n\n<p>At first look it looks a little bit weird. But actually it quite simple to read, especially if you take into account steps which you actually did.<\/p>\n\n\n\n<p>Text of macro contains class which named as <strong>Script,&nbsp;<\/strong> and this class contains method &#8211; Run which takes as argument akit object, it will be provided by Tekla instance when you run script in interface.<\/p>\n\n\n\n<p>And these all requirements for scripts acutally &#8211; entru point named Run which takes as external dependency &#8211; akit object.<\/p>\n\n\n\n<p>Inside this method you could do whatever you want. But by defauld you have to work with received object, which give you access to Tekla UI actions.<\/p>\n\n\n\n<p>For example in script which is listed above we do:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>&nbsp;<em>akit.Callback(&#8220;acmd_display_dialog&#8221;, &#8220;dia_view_dialog&#8221;, &#8220;main_frame&#8221;); &#8211;<\/em>call view dialog.<\/li><li>&nbsp;<em>akit.PushButton(&#8220;v1_get&#8221;, &#8220;dia_view_dialog&#8221;); &#8211;&nbsp;<\/em> at this dialog push button <strong>Get<\/strong><\/li><li><em>akit.ValueChange(&#8220;dia_view_dialog&#8221;, &#8220;v1_projection&#8221;, &#8220;1&#8221;); &#8211;&nbsp;<\/em> change some values.<\/li><li>and push buttons <strong>Modify<\/strong> to change settings of selected view in drawing<\/li><li>and <strong>Ok<\/strong> to close dialog<\/li><\/ul>\n\n\n\n<p>Accordingly we could edit scripts as simple text &#8211; add, edit or remove some actions. And because Tekla Structures use as scripting language C# we also could add some variables, make calculation, and even create our own menus and windows. &nbsp;For example you could look at script from this article (link would be available soon)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">More about scripts<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><strong><a href=\"http:\/\/cadsupport.ru\/en\/how-to-use-tekla-macro-script-with-tekla-api\/\">How to&nbsp;implement&nbsp;macro scripts&nbsp;functionality&nbsp;at applications<\/a><\/strong><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Tekla Structures allows to record whole user activity to macro script, and then you could play it again and again. This allows to save time on some routine. And if we take in case that Tekla Structures developers loves menus, and submenus, and sub-submenus, &nbsp;and buttons, and&#8230; all this stuff. With bunch of parameters, and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,5],"tags":[16,17,15,14],"class_list":["post-127","post","type-post","status-publish","format-standard","hentry","category-programing","category-tekla","tag-macro","tag-programming","tag-sctips","tag-tekla-structures"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to work with Tekla Structures Macro scripts - CadSupport<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to work with Tekla Structures Macro scripts - CadSupport\" \/>\n<meta property=\"og:description\" content=\"Tekla Structures allows to record whole user activity to macro script, and then you could play it again and again. This allows to save time on some routine. And if we take in case that Tekla Structures developers loves menus, and submenus, and sub-submenus, &nbsp;and buttons, and&#8230; all this stuff. With bunch of parameters, and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/\" \/>\n<meta property=\"og:site_name\" content=\"CadSupport\" \/>\n<meta property=\"article:published_time\" content=\"2016-04-26T10:23:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-19T11:26:07+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSmacro-150x150.jpg\" \/>\n<meta name=\"author\" content=\"DonJad\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DonJad\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/\",\"url\":\"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/\",\"name\":\"How to work with Tekla Structures Macro scripts - CadSupport\",\"isPartOf\":{\"@id\":\"http:\/\/cadsupport.ru\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/#primaryimage\"},\"image\":{\"@id\":\"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSmacro-150x150.jpg\",\"datePublished\":\"2016-04-26T10:23:06+00:00\",\"dateModified\":\"2019-08-19T11:26:07+00:00\",\"author\":{\"@id\":\"http:\/\/cadsupport.ru\/en\/#\/schema\/person\/b57bc479c7822ae8efbc5a5b624a3b8a\"},\"breadcrumb\":{\"@id\":\"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/#primaryimage\",\"url\":\"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSmacro-150x150.jpg\",\"contentUrl\":\"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSmacro-150x150.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/cadsupport.ru\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to work with Tekla Structures Macro scripts\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/cadsupport.ru\/en\/#website\",\"url\":\"http:\/\/cadsupport.ru\/en\/\",\"name\":\"CadSupport\",\"description\":\"smart solutions for engineering duties\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/cadsupport.ru\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/cadsupport.ru\/en\/#\/schema\/person\/b57bc479c7822ae8efbc5a5b624a3b8a\",\"name\":\"DonJad\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/cadsupport.ru\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b22cdec01f0612764c8b311b89954151bfb042524440d622849757864e132a55?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b22cdec01f0612764c8b311b89954151bfb042524440d622849757864e132a55?s=96&d=mm&r=g\",\"caption\":\"DonJad\"},\"url\":\"http:\/\/cadsupport.ru\/en\/author\/donjad\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to work with Tekla Structures Macro scripts - CadSupport","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/","og_locale":"en_US","og_type":"article","og_title":"How to work with Tekla Structures Macro scripts - CadSupport","og_description":"Tekla Structures allows to record whole user activity to macro script, and then you could play it again and again. This allows to save time on some routine. And if we take in case that Tekla Structures developers loves menus, and submenus, and sub-submenus, &nbsp;and buttons, and&#8230; all this stuff. With bunch of parameters, and [&hellip;]","og_url":"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/","og_site_name":"CadSupport","article_published_time":"2016-04-26T10:23:06+00:00","article_modified_time":"2019-08-19T11:26:07+00:00","og_image":[{"url":"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSmacro-150x150.jpg"}],"author":"DonJad","twitter_card":"summary_large_image","twitter_misc":{"Written by":"DonJad","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/","url":"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/","name":"How to work with Tekla Structures Macro scripts - CadSupport","isPartOf":{"@id":"http:\/\/cadsupport.ru\/en\/#website"},"primaryImageOfPage":{"@id":"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/#primaryimage"},"image":{"@id":"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/#primaryimage"},"thumbnailUrl":"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSmacro-150x150.jpg","datePublished":"2016-04-26T10:23:06+00:00","dateModified":"2019-08-19T11:26:07+00:00","author":{"@id":"http:\/\/cadsupport.ru\/en\/#\/schema\/person\/b57bc479c7822ae8efbc5a5b624a3b8a"},"breadcrumb":{"@id":"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/#primaryimage","url":"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSmacro-150x150.jpg","contentUrl":"http:\/\/cadsupport.ru\/wp-content\/uploads\/2014\/04\/TSmacro-150x150.jpg"},{"@type":"BreadcrumbList","@id":"http:\/\/cadsupport.ru\/en\/work-tekla-structures-macro-scripts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/cadsupport.ru\/en\/"},{"@type":"ListItem","position":2,"name":"How to work with Tekla Structures Macro scripts"}]},{"@type":"WebSite","@id":"http:\/\/cadsupport.ru\/en\/#website","url":"http:\/\/cadsupport.ru\/en\/","name":"CadSupport","description":"smart solutions for engineering duties","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/cadsupport.ru\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"http:\/\/cadsupport.ru\/en\/#\/schema\/person\/b57bc479c7822ae8efbc5a5b624a3b8a","name":"DonJad","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/cadsupport.ru\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b22cdec01f0612764c8b311b89954151bfb042524440d622849757864e132a55?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b22cdec01f0612764c8b311b89954151bfb042524440d622849757864e132a55?s=96&d=mm&r=g","caption":"DonJad"},"url":"http:\/\/cadsupport.ru\/en\/author\/donjad\/"}]}},"_links":{"self":[{"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/posts\/127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/comments?post=127"}],"version-history":[{"count":13,"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/posts\/127\/revisions"}],"predecessor-version":[{"id":339,"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/posts\/127\/revisions\/339"}],"wp:attachment":[{"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/media?parent=127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/categories?post=127"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/tags?post=127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}