{"id":10865,"date":"2020-10-20T07:00:49","date_gmt":"2020-10-20T14:00:49","guid":{"rendered":"https:\/\/www.autodesk.com/blogs\/autocad\/?p=10865"},"modified":"2020-10-20T10:45:12","modified_gmt":"2020-10-20T17:45:12","slug":"autolisp-to-automate-your-tasks-part-3-advanced","status":"publish","type":"post","link":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/","title":{"rendered":"AutoLISP to Automate Your Tasks: Part 3 &#8211; Advanced"},"content":{"rendered":"\n<p>In the first two parts of our <a href=\"https:\/\/www.autodesk.com/blogs\/autocad\/tag\/autolisp-to-automate-your-tasks\/\" target=\"_blank\" rel=\"noreferrer noopener\">series<\/a>, we\u2019ve looked at the skills you\u2019ll need to be get started using AutoLISP as a <a href=\"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-1-beginner\/\" target=\"_blank\" rel=\"noreferrer noopener\">beginner<\/a> and what will elevate you to a higher, <a href=\"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-2-intermediate\/\" target=\"_blank\" rel=\"noreferrer noopener\">intermediate<\/a> level. In this post, we\u2019ll explore what it means to call yourself an advanced programmer.<\/p>\n\n\n\n<p>Notice I used the term &#8220;advanced&#8221;\u2014not &#8220;expert.&#8221; I make this distinction for a couple of reasons. For one thing, there are very few real experts out there; you\u2019re always learning and advancing your skills. More importantly, you can to do some amazing things with AutoLISP and some advanced skills will take you to a whole other level.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-you-should-know-by-now\">What You Should Know By Now<\/h2>\n\n\n\n<p>By now, you have a firm grasp of most, if not all, core AutoLISP functions. More than likely, you\u2019ve also moved on from them and into the realm of the object based Visual LISP world. Your coding style has become concise and consistent, and you routinely employ error handling within it.<\/p>\n\n\n\n<p><em><span style=\"text-decoration: underline\">Note<\/span>: Error handling can come in various ways. One way is to simply use good programming techniques to start with. I call that inline error trapping or stopping problems before they start.<\/em><\/p>\n\n\n\n<p><em>(if (setq fname (findfile \u201cmyFile.txt\u201d)) &lt; make sure the file is there before continuing.<\/em><\/p>\n\n\n\n<p><em>You should also create your own error handler by setting the internal error function to your own.<br>(setq error myErrorFtn) ;;; this comes near the top of your defun<br>(defun myErrorFtn (msg) ;;; then write your own error function<br>;;; prompt the user using the msg argument<br>;;; reset any sysvars etc.<br>;;; also reset the internal error to nil )<\/em><\/p>\n\n\n\n<p><em>You may also use the Visual LISP VL-CATCH-ALL-APPLY method which allows you to intercept errors and continue processing.<\/em><\/p>\n\n\n\n<p>No doubt your programming has also ventured outside of AutoLISP (and Visual LISP), and you often find the need to import COM libraries to access other programs.<\/p>\n\n\n\n<p>You\u2019ve probably also explored creating event-driven code by utilizing VLR reactors. You\u2019re not relegated to using the memory space of the current drawing either, as you\u2019ve begun storing variable data in the registry for use at another time or in another drawing.<\/p>\n\n\n\n<p>You\u2019re also not restricted to operating on a single file. Most advanced users have mastered the art of working on entire folders full of .dwg files. And, since they\u2019re potentially working on hundreds or even thousands of files. And, they\u2019ve learned how to do so without the interface, by opening and running their code via an ObjectDBX connection.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"ways-an-advanced-user-can-automate-even-more\">Ways an Advanced User Can Automate Even More<\/h2>\n\n\n\n<p>Let\u2019s start with importing COM libraries by looking at a real-world example. A client of mine maintains a spreadsheet for each of their projects. There are around 100 data entries in this file. For each project, they would manually copy the data into custom fields within <a href=\"https:\/\/knowledge.autodesk.com\/support\/autocad\/learn-explore\/caas\/CloudHelp\/cloudhelp\/2021\/ENU\/AutoCAD-Core\/files\/GUID-2A98E78A-9E43-4DE8-8327-BF1BF803B4B7-htm.html\" target=\"_blank\" rel=\"noreferrer noopener\">DWGPROPS<\/a>, which is in turn read by <a href=\"https:\/\/knowledge.autodesk.com\/support\/autocad\/learn-explore\/caas\/CloudHelp\/cloudhelp\/2021\/ENU\/AutoCAD-Core\/files\/GUID-B9ADAE6A-2DD1-4C44-B126-CF3FF92EBC68-htm.html\" target=\"_blank\" rel=\"noreferrer noopener\">FIELDS<\/a> \u2013 mainly on the cover page. Of course, this led to tedious work, and human error. That\u2019s where I came in.<\/p>\n\n\n\n<p>I bypassed their whole process by importing the Microsoft Excel library with VLAX-IMPORT-TYPE-LIBRARY, then reading the data directly from the spreadsheet and into DWGPROPS using a combination of AutoLISP and Visual LISP.<\/p>\n\n\n\n<p>Is it easy? Not necessarily, but once you have the inspiration and enough skill, it\u2019s not hard to find all the example code you\u2019ll need out on the web. If you\u2019re at this advanced level, no doubt you\u2019ve also mastered that skill as well.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"221\" src=\"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/New-Lisp-Advanced_1.png\" alt=\"COM Libraries AutoLISP\" class=\"wp-image-10879\" srcset=\"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/New-Lisp-Advanced_1.png 640w, https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/New-Lisp-Advanced_1-300x104.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>Next come Reactors. Consider a couple of scenarios: You may want to execute some code when a drawing is closed. Or maybe you\u2019d like to prevent your users from exploding dimensions. That\u2019s where reactors come into play.<\/p>\n\n\n\n<p>Think of them as functions you write that hang out in the background waiting on certain events to happen. They only execute when that event happens \u2013 thus the <a rel=\"noreferrer noopener\" href=\"https:\/\/en.wikipedia.org\/wiki\/Event-driven_programming\" target=\"_blank\">Event Driven<\/a> moniker.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"614\" height=\"319\" src=\"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/New-Lisp-Advanced_2.png\" alt=\"Reactor AutoLISP\" class=\"wp-image-10880\" srcset=\"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/New-Lisp-Advanced_2.png 614w, https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/New-Lisp-Advanced_2-300x156.png 300w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/figure>\n\n\n\n<p>Below are some examples of the various reactor types you can create, along with a sample reactor for each. The syntax is the same for all types: the reactor function, followed by any AutoLISP data needed (or nil as I use here), then a list of the events to watch for. This dotted pair consists of the reactor and the callback function, which is the function you\u2019ll write to do that thing you do when the desired event occurs.<\/p>\n\n\n\n<p><em><span style=\"text-decoration: underline\">Note<\/span>: Please note that the callback function you\u2019ll write receives two arguments. The first identifies the calling reactor, and the second is a list of parameters regarding the event. This list will vary depending on the type of the reactor and is what you\u2019ll query within your callback function<\/em>.<\/p>\n\n\n\n<p>I also wrote about your super-power, applying your powerful AutoLISP functions across multiple files and folders. By now, you have your own method, whether it\u2019s self-written or a third-party tool. Think about the enormous power that gives you.<\/p>\n\n\n\n<p>Let\u2019s say there\u2019s an entire project with an issue that is best fixed via some API (in your case, AutoLISP), and you save the day by using AutoLISP to open each of them, you apply your function, save, close, and move on to the next. You\u2019re literally the department hero. Sure, it takes a while to operate on hundreds of files that way, but it sure beats doing it manually, not to mention being more reliable.<\/p>\n\n\n\n<p>So how do you go from hero to superhero? Now you use ObjectDBX. Simply put, it\u2019s a AutoLISP connection directly into the dwg file database. Who needs that pesky interface anyway?<\/p>\n\n\n\n<p>You\u2019ll gather your list of files, loop through it, and open each using ObjectDBX to perform your task. Go ahead an enjoy the accolades, raise and promotion you\u2019ll get when you not only save the day, but you do so in mere seconds instead of the hours your open\/fix\/save method took.<\/p>\n\n\n\n<p>(As usual, the sample code below isn\u2019t ready for prime time, it\u2019s just meant to get you thinking.)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"390\" src=\"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/New-Lisp-Advanced_4.png\" alt=\"ObjectDBX AutoLISP\" class=\"wp-image-10881\" srcset=\"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/New-Lisp-Advanced_4.png 708w, https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/New-Lisp-Advanced_4-300x165.png 300w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/figure>\n\n\n\n<p><em><u>Note<\/u>: I do need to add this caveat. ObjectDBX is great, but not everything in AutoCAD is exposed to it. You can do a lot within an ODBX connection, but not everything.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"final-thoughts\">Final Thoughts<\/h2>\n\n\n\n<p>I hope you\u2019ve enjoyed reading this <a rel=\"noreferrer noopener\" href=\"https:\/\/www.autodesk.com/blogs\/autocad\/tag\/autolisp-to-automate-your-tasks\/\" target=\"_blank\">series<\/a> as much as I\u2019ve had writing it. We\u2019ve gone from focusing on those with little or no experience and what they need to know to get some simple yet highly effective automation for their tasks, to the seasoned veteran, and most points in between.<\/p>\n\n\n\n<p>My examples of what you can do at each level are certainly not all-inclusive, but instead were intended to be food for thought. What you need and what you come up with are entirely your own, but I hope I\u2019ve provided some inspiration for your journey.<\/p>\n\n\n\n<p>In part one\u2019s closing remarks, I mentioned my mentor from back in the day. His name is Bill Kramer, and he inspired many of us with his examples, tutorials, articles, and humor. So as I close this series of articles, I\u2019ll end the same way I did in the others, and with the same plea Bill used at the end of all of his articles: \u201cUntil next time, keep on programmin&#8217;.\u201d<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the first two parts of our series, we\u2019ve looked at the skills you\u2019ll need to be get started using AutoLISP as a beginner and what will elevate you to a higher, intermediate level. In this post, we\u2019ll explore what it means to call yourself an advanced programmer. Notice I used the term &#8220;advanced&#8221;\u2014not &#8220;expert.&#8221; [&hellip;]<\/p>\n","protected":false},"author":329,"featured_media":10873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[893],"tags":[386,7332],"class_list":["post-10865","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-learning","tag-autolisp","tag-autolisp-to-automate-your-tasks","dhig-theme--light"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>AutoLISP to Automate Your Tasks: Part 3 - Advanced | AutoCAD Blog | Autodesk<\/title>\n<meta name=\"description\" content=\"Discover new tips for advanced users of AutoLISP in AutoCAD, including the benefits of reactors and ObjectDBX for your projects.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AutoLISP to Automate Your Tasks: Part 3 - Advanced\" \/>\n<meta property=\"og:description\" content=\"Discover new tips for advanced users of AutoLISP in AutoCAD, including the benefits of reactors and ObjectDBX for your projects.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/\" \/>\n<meta property=\"og:site_name\" content=\"AutoCAD Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/autocad\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-20T14:00:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-10-20T17:45:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/blogs.autodesk.com\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/AutoLISP-Advanced-Feature-1536x830-1-scaled.jpg?fit=2560%2C1383&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1383\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Frank Mayfield\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@heathercs3ez\" \/>\n<meta name=\"twitter:site\" content=\"@autocad\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Frank Mayfield\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/\"},\"author\":{\"name\":\"Frank Mayfield\",\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/#\\\/schema\\\/person\\\/fbfe7079a52f7aa618a72c29f6398de6\"},\"headline\":\"AutoLISP to Automate Your Tasks: Part 3 &#8211; Advanced\",\"datePublished\":\"2020-10-20T14:00:49+00:00\",\"dateModified\":\"2020-10-20T17:45:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/\"},\"wordCount\":1226,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/wp-content\\\/uploads\\\/sites\\\/35\\\/2020\\\/10\\\/AutoLISP-Advanced-Feature-1536x830-1-scaled.jpg\",\"keywords\":[\"AutoLISP\",\"AutoLISP to Automate Your Tasks\"],\"articleSection\":[\"Learning\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/\",\"url\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/\",\"name\":\"AutoLISP to Automate Your Tasks: Part 3 - Advanced | AutoCAD Blog | Autodesk\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/wp-content\\\/uploads\\\/sites\\\/35\\\/2020\\\/10\\\/AutoLISP-Advanced-Feature-1536x830-1-scaled.jpg\",\"datePublished\":\"2020-10-20T14:00:49+00:00\",\"dateModified\":\"2020-10-20T17:45:12+00:00\",\"description\":\"Discover new tips for advanced users of AutoLISP in AutoCAD, including the benefits of reactors and ObjectDBX for your projects.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/wp-content\\\/uploads\\\/sites\\\/35\\\/2020\\\/10\\\/AutoLISP-Advanced-Feature-1536x830-1-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/wp-content\\\/uploads\\\/sites\\\/35\\\/2020\\\/10\\\/AutoLISP-Advanced-Feature-1536x830-1-scaled.jpg\",\"width\":2560,\"height\":1383,\"caption\":\"AutoLISP Advanced\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/autolisp-to-automate-your-tasks-part-3-advanced\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Learning\",\"item\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/learning\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"AutoLISP to Automate Your Tasks: Part 3 &#8211; Advanced\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/#website\",\"url\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/\",\"name\":\"AutoCAD Blog\",\"description\":\"Your home for all things AutoCAD\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/#organization\",\"name\":\"Autodesk, Inc.\",\"url\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/wp-content\\\/uploads\\\/sites\\\/35\\\/2022\\\/06\\\/16\\\/autodesk-autocad-small_social-400.png\",\"contentUrl\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/wp-content\\\/uploads\\\/sites\\\/35\\\/2022\\\/06\\\/16\\\/autodesk-autocad-small_social-400.png\",\"width\":400,\"height\":400,\"caption\":\"Autodesk, Inc.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/autocad\",\"https:\\\/\\\/x.com\\\/autocad\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/#\\\/schema\\\/person\\\/fbfe7079a52f7aa618a72c29f6398de6\",\"name\":\"Frank Mayfield\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/wp-content\\\/uploads\\\/sites\\\/35\\\/2020\\\/04\\\/frank-Headshot-Brick-Cropped_vfbt8t-150x150.png\",\"url\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/wp-content\\\/uploads\\\/sites\\\/35\\\/2020\\\/04\\\/frank-Headshot-Brick-Cropped_vfbt8t-150x150.png\",\"contentUrl\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/wp-content\\\/uploads\\\/sites\\\/35\\\/2020\\\/04\\\/frank-Headshot-Brick-Cropped_vfbt8t-150x150.png\",\"caption\":\"Frank Mayfield\"},\"description\":\"Frank has worked in various design and CAD Management roles with AutoCAD and Autodesk software since 1986 (v2.62). He is currently a Design Technology Consultant in Tulsa, OK. He also serves as Vice President on the AUGI Board of Directors and is a member of numerous Autodesk user panels. As a top-rated mentor for trial users of AutoCAD 2018 and AutoCAD LT 2018, he has provided live, real-time guidance and support for over 2,500 new users in more than 50 countries worldwide. He currently serves on the AUGI Board of Directors and is a member of numerous Autodesk user panels.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/heathercs3ez\"],\"url\":\"https:\\\/\\\/www.autodesk.com/blogs\\\/autocad\\\/author\\\/frankmayfield\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"AutoLISP to Automate Your Tasks: Part 3 - Advanced | AutoCAD Blog | Autodesk","description":"Discover new tips for advanced users of AutoLISP in AutoCAD, including the benefits of reactors and ObjectDBX for your projects.","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":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/","og_locale":"en_US","og_type":"article","og_title":"AutoLISP to Automate Your Tasks: Part 3 - Advanced","og_description":"Discover new tips for advanced users of AutoLISP in AutoCAD, including the benefits of reactors and ObjectDBX for your projects.","og_url":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/","og_site_name":"AutoCAD Blog","article_publisher":"https:\/\/www.facebook.com\/autocad","article_published_time":"2020-10-20T14:00:49+00:00","article_modified_time":"2020-10-20T17:45:12+00:00","og_image":[{"width":2560,"height":1383,"url":"https:\/\/i0.wp.com\/blogs.autodesk.com\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/AutoLISP-Advanced-Feature-1536x830-1-scaled.jpg?fit=2560%2C1383&ssl=1","type":"image\/jpeg"}],"author":"Frank Mayfield","twitter_card":"summary_large_image","twitter_creator":"@heathercs3ez","twitter_site":"@autocad","twitter_misc":{"Written by":"Frank Mayfield","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/#article","isPartOf":{"@id":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/"},"author":{"name":"Frank Mayfield","@id":"https:\/\/www.autodesk.com/blogs\/autocad\/#\/schema\/person\/fbfe7079a52f7aa618a72c29f6398de6"},"headline":"AutoLISP to Automate Your Tasks: Part 3 &#8211; Advanced","datePublished":"2020-10-20T14:00:49+00:00","dateModified":"2020-10-20T17:45:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/"},"wordCount":1226,"commentCount":0,"publisher":{"@id":"https:\/\/www.autodesk.com/blogs\/autocad\/#organization"},"image":{"@id":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/#primaryimage"},"thumbnailUrl":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/AutoLISP-Advanced-Feature-1536x830-1-scaled.jpg","keywords":["AutoLISP","AutoLISP to Automate Your Tasks"],"articleSection":["Learning"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/","url":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/","name":"AutoLISP to Automate Your Tasks: Part 3 - Advanced | AutoCAD Blog | Autodesk","isPartOf":{"@id":"https:\/\/www.autodesk.com/blogs\/autocad\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/#primaryimage"},"image":{"@id":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/#primaryimage"},"thumbnailUrl":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/AutoLISP-Advanced-Feature-1536x830-1-scaled.jpg","datePublished":"2020-10-20T14:00:49+00:00","dateModified":"2020-10-20T17:45:12+00:00","description":"Discover new tips for advanced users of AutoLISP in AutoCAD, including the benefits of reactors and ObjectDBX for your projects.","breadcrumb":{"@id":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/#primaryimage","url":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/AutoLISP-Advanced-Feature-1536x830-1-scaled.jpg","contentUrl":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/10\/AutoLISP-Advanced-Feature-1536x830-1-scaled.jpg","width":2560,"height":1383,"caption":"AutoLISP Advanced"},{"@type":"BreadcrumbList","@id":"https:\/\/www.autodesk.com/blogs\/autocad\/autolisp-to-automate-your-tasks-part-3-advanced\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/www.autodesk.com/blogs\/autocad\/"},{"@type":"ListItem","position":2,"name":"Learning","item":"https:\/\/www.autodesk.com/blogs\/autocad\/learning\/"},{"@type":"ListItem","position":3,"name":"AutoLISP to Automate Your Tasks: Part 3 &#8211; Advanced"}]},{"@type":"WebSite","@id":"https:\/\/www.autodesk.com/blogs\/autocad\/#website","url":"https:\/\/www.autodesk.com/blogs\/autocad\/","name":"AutoCAD Blog","description":"Your home for all things AutoCAD","publisher":{"@id":"https:\/\/www.autodesk.com/blogs\/autocad\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.autodesk.com/blogs\/autocad\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.autodesk.com/blogs\/autocad\/#organization","name":"Autodesk, Inc.","url":"https:\/\/www.autodesk.com/blogs\/autocad\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.autodesk.com/blogs\/autocad\/#\/schema\/logo\/image\/","url":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2022\/06\/16\/autodesk-autocad-small_social-400.png","contentUrl":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2022\/06\/16\/autodesk-autocad-small_social-400.png","width":400,"height":400,"caption":"Autodesk, Inc."},"image":{"@id":"https:\/\/www.autodesk.com/blogs\/autocad\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/autocad","https:\/\/x.com\/autocad"]},{"@type":"Person","@id":"https:\/\/www.autodesk.com/blogs\/autocad\/#\/schema\/person\/fbfe7079a52f7aa618a72c29f6398de6","name":"Frank Mayfield","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/04\/frank-Headshot-Brick-Cropped_vfbt8t-150x150.png","url":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/04\/frank-Headshot-Brick-Cropped_vfbt8t-150x150.png","contentUrl":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-content\/uploads\/sites\/35\/2020\/04\/frank-Headshot-Brick-Cropped_vfbt8t-150x150.png","caption":"Frank Mayfield"},"description":"Frank has worked in various design and CAD Management roles with AutoCAD and Autodesk software since 1986 (v2.62). He is currently a Design Technology Consultant in Tulsa, OK. He also serves as Vice President on the AUGI Board of Directors and is a member of numerous Autodesk user panels. As a top-rated mentor for trial users of AutoCAD 2018 and AutoCAD LT 2018, he has provided live, real-time guidance and support for over 2,500 new users in more than 50 countries worldwide. He currently serves on the AUGI Board of Directors and is a member of numerous Autodesk user panels.","sameAs":["https:\/\/x.com\/heathercs3ez"],"url":"https:\/\/www.autodesk.com/blogs\/autocad\/author\/frankmayfield\/"}]}},"_links":{"self":[{"href":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-json\/wp\/v2\/posts\/10865","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-json\/wp\/v2\/users\/329"}],"replies":[{"embeddable":true,"href":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-json\/wp\/v2\/comments?post=10865"}],"version-history":[{"count":0,"href":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-json\/wp\/v2\/posts\/10865\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-json\/wp\/v2\/media\/10873"}],"wp:attachment":[{"href":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-json\/wp\/v2\/media?parent=10865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-json\/wp\/v2\/categories?post=10865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.autodesk.com/blogs\/autocad\/wp-json\/wp\/v2\/tags?post=10865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}