{"id":132,"date":"2016-08-17T14:08:17","date_gmt":"2016-08-17T14:08:17","guid":{"rendered":"http:\/\/cadsupport.ru\/en\/?p=132"},"modified":"2017-06-02T15:06:53","modified_gmt":"2017-06-02T15:06:53","slug":"how_to_events_tekla_structures_open_api","status":"publish","type":"post","link":"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/","title":{"rendered":"How to work with Events in Tekla Structures."},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-134 size-medium\" src=\"http:\/\/cadsupport.ru\/en\/wp-content\/uploads\/2016\/08\/Tekla_open_API_Model_Events-300x187.png\" alt=\"Tekla structures open API Events, how to work with\" width=\"300\" height=\"187\" srcset=\"http:\/\/cadsupport.ru\/en\/wp-content\/uploads\/2016\/08\/Tekla_open_API_Model_Events-300x187.png 300w, http:\/\/cadsupport.ru\/en\/wp-content\/uploads\/2016\/08\/Tekla_open_API_Model_Events.png 450w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>Using Events in C# is a good way to make your application more sensitive and add interactivity abilities to your solutions. These allows you to reply at changes in Tekla Model or Drawing, as soon as they arrived. But in other side Events is pretty complicated for understanding and it not so easy to apply in your solution. So for better understanding of mechanism of Events you should understand of how <strong>delegates<\/strong> work.<\/p>\n<p>But if you want just to add ability to react at your script or application listing bellow should helps.\u00a0<!--more--><\/p>\n<p>This is a listing with code for a simple form, which allow to catch Event from Tekla Model which happens each time when user change selection in model.<\/p>\n<p><!-- code formatted by http:\/\/manoli.net\/csharpformat\/ --><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">using<\/span> System;\r\n<span class=\"kwrd\">using<\/span> System.Collections.Generic;\r\n<span class=\"kwrd\">using<\/span> System.ComponentModel;\r\n<span class=\"kwrd\">using<\/span> System.Threading.Tasks;\r\n<span class=\"kwrd\">using<\/span> System.Windows.Forms;\r\n<span class=\"kwrd\">using<\/span> Tekla.Structures.Model;\r\n\r\n<span class=\"kwrd\">namespace<\/span> EventFormRegister\r\n{\r\n    <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">partial<\/span> <span class=\"kwrd\">class<\/span> Form1 : Form\r\n    {\r\n        <span class=\"rem\">\/\/create event first <\/span>\r\n        <span class=\"kwrd\">private<\/span> Tekla.Structures.Model.Events _events = <span class=\"kwrd\">new<\/span> Tekla.Structures.Model.Events();\r\n        <span class=\"kwrd\">private<\/span> <span class=\"kwrd\">object<\/span> _selectionEventHandlerLock = <span class=\"kwrd\">new<\/span> <span class=\"kwrd\">object<\/span>();\r\n\r\n        <span class=\"kwrd\">public<\/span> Form1()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        <span class=\"kwrd\">private<\/span> <span class=\"kwrd\">void<\/span> Form1_Load(<span class=\"kwrd\">object<\/span> sender, EventArgs e)\r\n        {\r\n            <span class=\"rem\">\/\/add function to event <\/span>\r\n            _events.SelectionChange += Events_SelectionChangeEvent;\r\n            <span class=\"rem\">\/\/and register it<\/span>\r\n            _events.Register();\r\n        }\r\n\r\n        <span class=\"kwrd\">private<\/span> <span class=\"kwrd\">void<\/span> Form1_FormClosing(<span class=\"kwrd\">object<\/span> sender, FormClosingEventArgs e)\r\n        {\r\n            <span class=\"rem\">\/\/unregister it on exit.<\/span>\r\n            _events.UnRegister();\r\n        }\r\n\r\n        <span class=\"kwrd\">void<\/span> Events_SelectionChangeEvent()\r\n        {\r\n            <span class=\"rem\">\/\/Make sure that the inner code block is running synchronously.<\/span>\r\n            <span class=\"kwrd\">lock<\/span> (_selectionEventHandlerLock)\r\n            {\r\n                MessageBox.Show(<span class=\"str\">\"Selection changed event received\"<\/span>);\r\n            }\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<h2>Tekla Structures openApi Events Examples:<\/h2>\n<p>Now let&#8217;s make something useful with this feature:\u00a0<a href=\"http:\/\/cadsupport.ru\/en\/tekla-custom-inquiry-macro-script\/\">Custom Inquire Tekla Structures Macro Script<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Using Events in C# is a good way to make your application more sensitive and add interactivity abilities to your solutions. These allows you to reply at changes in Tekla Model or Drawing, as soon as they arrived. But in other side Events is pretty complicated for understanding and it not so easy to apply [&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":[19,18,9,20,14],"class_list":["post-132","post","type-post","status-publish","format-standard","hentry","category-programing","category-tekla","tag-code-samples","tag-events","tag-openapi","tag-selection-change","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 Events in Tekla Structures. - 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\/how_to_events_tekla_structures_open_api\/\" \/>\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 Events in Tekla Structures. - CadSupport\" \/>\n<meta property=\"og:description\" content=\"Using Events in C# is a good way to make your application more sensitive and add interactivity abilities to your solutions. These allows you to reply at changes in Tekla Model or Drawing, as soon as they arrived. But in other side Events is pretty complicated for understanding and it not so easy to apply [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/\" \/>\n<meta property=\"og:site_name\" content=\"CadSupport\" \/>\n<meta property=\"article:published_time\" content=\"2016-08-17T14:08:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-06-02T15:06:53+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/cadsupport.ru\/en\/wp-content\/uploads\/2016\/08\/Tekla_open_API_Model_Events-300x187.png\" \/>\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=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/\",\"url\":\"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/\",\"name\":\"How to work with Events in Tekla Structures. - CadSupport\",\"isPartOf\":{\"@id\":\"http:\/\/cadsupport.ru\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/#primaryimage\"},\"image\":{\"@id\":\"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/cadsupport.ru\/en\/wp-content\/uploads\/2016\/08\/Tekla_open_API_Model_Events-300x187.png\",\"datePublished\":\"2016-08-17T14:08:17+00:00\",\"dateModified\":\"2017-06-02T15:06:53+00:00\",\"author\":{\"@id\":\"http:\/\/cadsupport.ru\/en\/#\/schema\/person\/b57bc479c7822ae8efbc5a5b624a3b8a\"},\"breadcrumb\":{\"@id\":\"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/#primaryimage\",\"url\":\"http:\/\/cadsupport.ru\/en\/wp-content\/uploads\/2016\/08\/Tekla_open_API_Model_Events.png\",\"contentUrl\":\"http:\/\/cadsupport.ru\/en\/wp-content\/uploads\/2016\/08\/Tekla_open_API_Model_Events.png\",\"width\":450,\"height\":280,\"caption\":\"Tekla structures open API Events, how to work with\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/cadsupport.ru\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to work with Events in Tekla Structures.\"}]},{\"@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 Events in Tekla Structures. - 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\/how_to_events_tekla_structures_open_api\/","og_locale":"en_US","og_type":"article","og_title":"How to work with Events in Tekla Structures. - CadSupport","og_description":"Using Events in C# is a good way to make your application more sensitive and add interactivity abilities to your solutions. These allows you to reply at changes in Tekla Model or Drawing, as soon as they arrived. But in other side Events is pretty complicated for understanding and it not so easy to apply [&hellip;]","og_url":"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/","og_site_name":"CadSupport","article_published_time":"2016-08-17T14:08:17+00:00","article_modified_time":"2017-06-02T15:06:53+00:00","og_image":[{"url":"http:\/\/cadsupport.ru\/en\/wp-content\/uploads\/2016\/08\/Tekla_open_API_Model_Events-300x187.png"}],"author":"DonJad","twitter_card":"summary_large_image","twitter_misc":{"Written by":"DonJad","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/","url":"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/","name":"How to work with Events in Tekla Structures. - CadSupport","isPartOf":{"@id":"http:\/\/cadsupport.ru\/en\/#website"},"primaryImageOfPage":{"@id":"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/#primaryimage"},"image":{"@id":"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/#primaryimage"},"thumbnailUrl":"http:\/\/cadsupport.ru\/en\/wp-content\/uploads\/2016\/08\/Tekla_open_API_Model_Events-300x187.png","datePublished":"2016-08-17T14:08:17+00:00","dateModified":"2017-06-02T15:06:53+00:00","author":{"@id":"http:\/\/cadsupport.ru\/en\/#\/schema\/person\/b57bc479c7822ae8efbc5a5b624a3b8a"},"breadcrumb":{"@id":"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/#primaryimage","url":"http:\/\/cadsupport.ru\/en\/wp-content\/uploads\/2016\/08\/Tekla_open_API_Model_Events.png","contentUrl":"http:\/\/cadsupport.ru\/en\/wp-content\/uploads\/2016\/08\/Tekla_open_API_Model_Events.png","width":450,"height":280,"caption":"Tekla structures open API Events, how to work with"},{"@type":"BreadcrumbList","@id":"http:\/\/cadsupport.ru\/en\/how_to_events_tekla_structures_open_api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/cadsupport.ru\/en\/"},{"@type":"ListItem","position":2,"name":"How to work with Events in Tekla Structures."}]},{"@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\/132","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=132"}],"version-history":[{"count":9,"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/posts\/132\/revisions"}],"predecessor-version":[{"id":141,"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/posts\/132\/revisions\/141"}],"wp:attachment":[{"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/media?parent=132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/categories?post=132"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/cadsupport.ru\/en\/wp-json\/wp\/v2\/tags?post=132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}