{"id":767,"date":"2014-07-07T23:20:33","date_gmt":"2014-07-07T23:20:33","guid":{"rendered":"http:\/\/elbsolutions.com\/projects\/?p=767"},"modified":"2022-02-03T11:25:02","modified_gmt":"2022-02-03T17:25:02","slug":"bentley-autoplant-changing-sysids-way-vba-code","status":"publish","type":"post","link":"https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/","title":{"rendered":"Bentley Autoplant changing SysID&#8217;s &#8211; a way to do so in VBA code"},"content":{"rendered":"<p>OK &#8211; so I FINALLY have the whole mystery solved of what happens to SySID&#8217;s (sys id&#8217;s) in the front end (generation) and use (in DWG model files). Ideally they should match &#8211; so if you can&#8217;t change\u00a0the source (out of my control) <strong>let try to\u00a0change the destination<\/strong>?? Lets investigate.<\/p>\n<p>First, I have needed to understand where Bentley puts all their data in AutoCAD. Finally I have an excuse to finish my investigation. I would like to change my Sys&#8217;IDs for a set of components so that the match the Spec Gen ones. So due to a situation out of my control (we simply wanted the Long Description changed), the SyS ID&#8217;s were all changed and it is more work to get them changed at the source than just change them in the DWG or AutoPLANT model. So lets look for them, find them and change\u00a0them and heck, why not change some other items along the way like that Long Description.<\/p>\n<p>In this article, lets look at all the XDATA apps that Autoplant uses. It discusses how to know what they are and what all the values are. Low and behold &#8211; the storage. Currently this article does not look at changing the values &#8211; that will come VERY shortly.<!--more--><\/p>\n<h3>Some background&#8230;<\/h3>\n<p>First, we originally wanted to change the long and short description but after it was changed, it became apparent that the short description triggered a SyS id change. So, we backed off and requested only a long description changed. Since there are a couple of departments involved, all has gone to hell in a handbasket (a simple restore to the orig files is not in the question either &#8211; I hate politics). So how the heck can we get back to a position where the sysid&#8217;s are going to match? Well, if you can&#8217;t change the source, can we change the destination? Perhaps. First, lets find out where all that is stored.<\/p>\n<h3>Finding where AutoPLANT data is stored<\/h3>\n<p>Yes it is in in XDATA. Lets see some code that reveals where the data is stored &#8211; in XDATA apps. Using VBA (and I am using AutoCAD 2011)<\/p>\n<pre class=\"brush: vb; title: ; notranslate\" title=\"\">\r\n\r\nSub lt()\r\n\r\nFor i = 0 To ThisDrawing.Database.RegisteredApplications.Count - 1\r\n'ThisDrawing.Database.RegisteredApplications.Item (i)\r\nDebug.Print ThisDrawing.Database.RegisteredApplications.Item(i).Name\r\nNext i\r\n\r\nEnd Sub\r\n\r\n<\/pre>\n<p>Next lets see some code that will go through some items on specific layers and then, using the apps that we got out above, we will see what data is where. Also &#8211; lets note that I look through the AT_GRP app twice because if it is not a valid AP component (one that starts with AT_) I am not interested. It all gets written to a file in VBA<\/p>\n<pre class=\"brush: vb; title: ; notranslate\" title=\"\">\r\n\r\nSub InvestigateThis()\r\n\r\nDim SetsCount As Integer\r\nDim layer() As Variant\r\nDim MyType() As Integer\r\nDim ObjsetRef As AcadSelectionSet\r\nDim i As Integer\r\nDim ent As AcadEntity\r\nDim dV As Variant\r\nDim dType As Variant\r\nDim dValue As Variant\r\nDim TempPt As Variant\r\n\r\nDim app As String\r\nDim appCount As Integer\r\n\r\nSetsCount = ThisDrawing.SelectionSets.Count - 1 'get the selection sets in the xref\r\n\r\nReDim MyType(3) 'redeclare the filter to find only\u00a0items we want\r\nReDim layer(3)\r\nMyType(0) = -4: layer(0) = &quot;&lt;OR&quot; 'creates the filter\r\nMyType(1) = 8: layer(1) = &quot;LAYER_ONE&quot; 'layers that the lights are on\r\nMyType(2) = 8: layer(2) = &quot;LAYER_TWO&quot;\r\nMyType(3) = -4: layer(3) = &quot;OR&gt;&quot;\r\n\r\nSet ObjsetRef = Nothing\r\nFor i = 0 To SetsCount 'check if the selection set &quot;desired objects&quot; exists\r\nSet ObjsetRef = ThisDrawing.SelectionSets.Item(i)\r\nIf ObjsetRef.Name = &quot;LightObjects&quot; Then\r\nObjsetRef.Clear\r\nExit For\r\nElse\r\nSet Objset = Nothing\r\nEnd If\r\nNext\r\nIf ObjsetRef Is Nothing Then\r\nSet ObjsetRef = ThisDrawing.SelectionSets.Add(&quot;ExperimentObjects&quot;)\r\nEnd If\r\n\r\nDim appsList(16) As String\r\nappsList(0) = &quot;AT_GRP&quot; ' check to see if it is an autoplant component.\r\nappsList(1) = &quot;AT_GRP&quot;\r\nappsList(2) = &quot;AT_COMP&quot;\r\nappsList(3) = &quot;AT_PROJCOMP&quot;\r\nappsList(4) = &quot;AT_SPEC&quot;\r\nappsList(5) = &quot;AT_SUBGRP&quot;\r\nappsList(6) = &quot;AT_EXTDATA&quot;\r\nappsList(7) = &quot;AT_PTS&quot;\r\nappsList(8) = &quot;AT_MOD&quot;\r\nappsList(9) = &quot;AT_HIGHSYM&quot;\r\nappsList(10) = &quot;ACAD_PSEXT&quot;\r\nappsList(11) = &quot;AT_EQP&quot;\r\nappsList(12) = &quot;AT_ATT&quot;\r\nappsList(13) = &quot;AT_ATT_DATA&quot;\r\nappsList(14) = &quot;AT_STOP&quot;\r\nappsList(15) = &quot;AT_CLDATA&quot;\r\nappsList(16) = &quot;ACAD_PSEXT&quot;\r\n\r\nDim FilePath As String\r\nFilePath = &quot;c:\\temp\\test.csv&quot;\r\n\r\nOpen FilePath For Output As #1\r\nWrite #1, &quot;&quot;\r\nClose #1\r\n\r\nObjsetRef.Select acSelectionSetAll, , , MyType, layer\r\nIf ObjsetRef.Count &lt;&gt; 0 Then 'if there are items\u00a0continue\r\nFor Each ent In ObjsetRef 'repeat for all lights in the xref and get current\u00a0item\r\n\r\nFor appCount = 0 To UBound(appsList)\r\n\r\ndV = &quot;--NULL--&quot;\r\n\r\nOn Error Resume Next\r\n\r\n'ent.GetXData &quot;AT_MOD&quot;, dType, dValue 'BENTLY USES AT_MOD AS ONE OF ITS XDATA APP\r\n\r\napp = appsList(appCount)\r\nent.GetXData app, dType, dValue\r\ndV = dValue(0)\r\nOn Error GoTo 0\r\nIf dV &lt;&gt; &quot;--NULL--&quot; And dV &lt;&gt; &quot;&quot; Then\r\nTempPt = 0\r\nOn Error Resume Next\r\nTempPt = ent.InsertionPoint\r\nOn Error GoTo 0\r\npartnum = InvestigateXdata(dType, dValue, TempPt, ent, app, appCount, FilePath)\r\nIf (partnum = &quot;&quot;) Then\r\nappCount = UBound(appsList) + 1\r\nElse\r\nIf (appCount = 0) Then\r\nOpen FilePath For Append As #1\r\nWrite #1, &quot;NewComponent::&quot; &amp; partnum\r\nClose #1\r\nDebug.Print &quot;NewComponent::&quot; &amp; partnum\r\nEnd If\r\nEnd If\r\n\r\nElse\r\n\r\nEnd If\r\nNext\r\nNext ent\r\nEnd If\r\n\r\nEnd Sub\r\nFunction InvestigateXdata(dType As Variant, dValue As Variant, TempPt As Variant, ent As AcadEntity, app As String, appCount As Integer, FilePath As String)\r\n\r\nDim i As Integer\r\nDim Upbound As Integer\r\nDim UpboundV As Integer\r\nDim HasBOFVal As Integer\r\n\r\nDim Tag As String\r\nDim found As Integer\r\nDim pos1 As Integer\r\nDim pos2 As Integer\r\n\r\nfound = 0\r\n\r\nUpboundV = UBound(dValue, 1)\r\n\r\nDim tabs As Integer\r\n\r\nes = &quot;&quot;\r\ntabs = 1\r\n\r\nDim tabSep As String\r\n'tabSep = vbTab\r\ntabSep = &quot;|&quot;\r\n\r\nDim sep As String\r\nsep = &quot;&quot;\r\n\r\nDim dVal As String\r\nDim vt As Integer\r\nDim oddball As Boolean\r\n\r\nFor i = 0 To UpboundV\r\noddball = False\r\n\r\nvt = VarType(dValue(i))\r\n\r\ndVal = &quot;&quot;\r\nIf VarType(dValue(i)) &lt;&gt; vbArray And VarType(dValue(i)) &lt;&gt; 8197 Then\r\ndVal = CStr(dValue(i))\r\nElse\r\noddball = True\r\nEnd If\r\n\r\nIf Not (oddball) Then\r\n\r\nIf UCase(dVal) = &quot;{&quot; Then\r\ntabs = tabs + 1\r\nsep = tabSep\r\nElseIf UCase(dVal) = &quot;}&quot; Then\r\ntabs = tabs - 1\r\nsep = tabSep\r\nElse\r\nes = es + sep &amp; dVal\r\nsep = &quot;::&quot;\r\nEnd If\r\nIf (tabs = 1) Then\r\nsep = vbCrLf\r\nEnd If\r\nElse\r\nes = es &amp; &quot;::VarType(&quot; &amp; VarType(dVal) &amp; &quot;)&quot;\r\nEnd If\r\nNext i\r\n\r\nIf (appCount &gt; 0) Then\r\nFor j = 1 To tabs\r\nes = tabSep &amp; es\r\nNext\r\nOpen FilePath For Append As #1\r\nWrite #1, es\r\nClose #1\r\n\r\nEnd If\r\n\r\nIf (appCount = 0) Then\r\npos1 = InStr(1, es, &quot;GN::AT_&quot;)\r\nIf pos1 &gt; 0 Then\r\npos2 = InStr(pos1, es, tabSep)\r\nIf (pos2 = 0) Then\r\npos2 = Len(es) + 1\r\nEnd If\r\nInvestigateXdata = Mid(es, InStr(1, es, &quot;GN::AT_&quot;) + 4, pos2 - pos1 + 1)\r\nElse\r\nInvestigateXdata = &quot;&quot;\r\nEnd If\r\nElse\r\nInvestigateXdata = &quot;validpart&quot;\r\nEnd If\r\n\r\nEnd Function\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>OK &#8211; so I FINALLY have the whole mystery solved of what happens to SySID&#8217;s (sys id&#8217;s) in the front end (generation) and use (in DWG model files). Ideally they should match &#8211; so if you can&#8217;t change\u00a0the source (out of my control) let try to\u00a0change the destination?? Lets investigate. First, I have needed to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,1],"tags":[],"class_list":["post-767","post","type-post","status-publish","format-standard","hentry","category-bentley-autoplant","category-general"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Bentley Autoplant changing SysID&#039;s - a way to do so in VBA code - ELB Solutions.com Inc.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bentley Autoplant changing SysID&#039;s - a way to do so in VBA code - ELB Solutions.com Inc.\" \/>\n<meta property=\"og:description\" content=\"OK &#8211; so I FINALLY have the whole mystery solved of what happens to SySID&#8217;s (sys id&#8217;s) in the front end (generation) and use (in DWG model files). Ideally they should match &#8211; so if you can&#8217;t change\u00a0the source (out of my control) let try to\u00a0change the destination?? Lets investigate. First, I have needed to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/\" \/>\n<meta property=\"og:site_name\" content=\"ELB Solutions.com Inc.\" \/>\n<meta property=\"article:published_time\" content=\"2014-07-07T23:20:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-03T17:25:02+00:00\" \/>\n<meta name=\"author\" content=\"Etienne Bley\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Etienne Bley\" \/>\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:\\\/\\\/elbsolutions.com\\\/projects\\\/bentley-autoplant-changing-sysids-way-vba-code\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/bentley-autoplant-changing-sysids-way-vba-code\\\/\"},\"author\":{\"name\":\"Etienne Bley\",\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/#\\\/schema\\\/person\\\/51e717c68f4f5917c63baf88f0896c39\"},\"headline\":\"Bentley Autoplant changing SysID&#8217;s &#8211; a way to do so in VBA code\",\"datePublished\":\"2014-07-07T23:20:33+00:00\",\"dateModified\":\"2022-02-03T17:25:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/bentley-autoplant-changing-sysids-way-vba-code\\\/\"},\"wordCount\":1193,\"articleSection\":[\"B-AutoPLANT\",\"General\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/bentley-autoplant-changing-sysids-way-vba-code\\\/\",\"url\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/bentley-autoplant-changing-sysids-way-vba-code\\\/\",\"name\":\"Bentley Autoplant changing SysID's - a way to do so in VBA code - ELB Solutions.com Inc.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/#website\"},\"datePublished\":\"2014-07-07T23:20:33+00:00\",\"dateModified\":\"2022-02-03T17:25:02+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/#\\\/schema\\\/person\\\/51e717c68f4f5917c63baf88f0896c39\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/bentley-autoplant-changing-sysids-way-vba-code\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/bentley-autoplant-changing-sysids-way-vba-code\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/bentley-autoplant-changing-sysids-way-vba-code\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bentley Autoplant changing SysID&#8217;s &#8211; a way to do so in VBA code\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/#website\",\"url\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/\",\"name\":\"ELB Solutions.com Inc.\",\"description\":\"Bringing all your IT Pieces together\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/#\\\/schema\\\/person\\\/51e717c68f4f5917c63baf88f0896c39\",\"name\":\"Etienne Bley\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g\",\"caption\":\"Etienne Bley\"},\"url\":\"https:\\\/\\\/elbsolutions.com\\\/projects\\\/author\\\/etienne-bley\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bentley Autoplant changing SysID's - a way to do so in VBA code - ELB Solutions.com Inc.","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:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/","og_locale":"en_US","og_type":"article","og_title":"Bentley Autoplant changing SysID's - a way to do so in VBA code - ELB Solutions.com Inc.","og_description":"OK &#8211; so I FINALLY have the whole mystery solved of what happens to SySID&#8217;s (sys id&#8217;s) in the front end (generation) and use (in DWG model files). Ideally they should match &#8211; so if you can&#8217;t change\u00a0the source (out of my control) let try to\u00a0change the destination?? Lets investigate. First, I have needed to [&hellip;]","og_url":"https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/","og_site_name":"ELB Solutions.com Inc.","article_published_time":"2014-07-07T23:20:33+00:00","article_modified_time":"2022-02-03T17:25:02+00:00","author":"Etienne Bley","twitter_misc":{"Written by":"Etienne Bley","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/#article","isPartOf":{"@id":"https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/"},"author":{"name":"Etienne Bley","@id":"https:\/\/elbsolutions.com\/projects\/#\/schema\/person\/51e717c68f4f5917c63baf88f0896c39"},"headline":"Bentley Autoplant changing SysID&#8217;s &#8211; a way to do so in VBA code","datePublished":"2014-07-07T23:20:33+00:00","dateModified":"2022-02-03T17:25:02+00:00","mainEntityOfPage":{"@id":"https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/"},"wordCount":1193,"articleSection":["B-AutoPLANT","General"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/","url":"https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/","name":"Bentley Autoplant changing SysID's - a way to do so in VBA code - ELB Solutions.com Inc.","isPartOf":{"@id":"https:\/\/elbsolutions.com\/projects\/#website"},"datePublished":"2014-07-07T23:20:33+00:00","dateModified":"2022-02-03T17:25:02+00:00","author":{"@id":"https:\/\/elbsolutions.com\/projects\/#\/schema\/person\/51e717c68f4f5917c63baf88f0896c39"},"breadcrumb":{"@id":"https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/elbsolutions.com\/projects\/bentley-autoplant-changing-sysids-way-vba-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/elbsolutions.com\/projects\/"},{"@type":"ListItem","position":2,"name":"Bentley Autoplant changing SysID&#8217;s &#8211; a way to do so in VBA code"}]},{"@type":"WebSite","@id":"https:\/\/elbsolutions.com\/projects\/#website","url":"https:\/\/elbsolutions.com\/projects\/","name":"ELB Solutions.com Inc.","description":"Bringing all your IT Pieces together","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/elbsolutions.com\/projects\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/elbsolutions.com\/projects\/#\/schema\/person\/51e717c68f4f5917c63baf88f0896c39","name":"Etienne Bley","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f8971dfb65b25b768415568f83247df4057f15d037137e386928a804e2c997b9?s=96&d=mm&r=g","caption":"Etienne Bley"},"url":"https:\/\/elbsolutions.com\/projects\/author\/etienne-bley\/"}]}},"_links":{"self":[{"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/posts\/767","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/comments?post=767"}],"version-history":[{"count":3,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/posts\/767\/revisions"}],"predecessor-version":[{"id":770,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/posts\/767\/revisions\/770"}],"wp:attachment":[{"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/media?parent=767"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/categories?post=767"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elbsolutions.com\/projects\/wp-json\/wp\/v2\/tags?post=767"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}