{"id":3305,"date":"2018-12-03T06:26:50","date_gmt":"2018-12-03T14:26:50","guid":{"rendered":"https:\/\/blogs.plm.automation.siemens.com\/t5\/Solid-Edge-Blog\/Adding-Metadata-to-Solid-Edge-Objects-Using-the-API\/ba-p\/547369"},"modified":"2020-05-07T14:22:22","modified_gmt":"2020-05-07T18:22:22","slug":"adding-metadata-to-solid-edge-objects-using-the-api","status":"publish","type":"post","link":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/adding-metadata-to-solid-edge-objects-using-the-api\/","title":{"rendered":"Adding Metadata to Solid Edge Objects Using the API"},"content":{"rendered":"<p><P>Textual information in the form of metadata can be added&nbsp;in Solid Edge in various ways:<\/P><\/p>\n<p><OL><br \/>\n<LI><a href=\"https:\/\/community.plm.automation.siemens.com\/t5\/Solid-Edge-Blog\/The-Myriad-of-Solid-Edge-File-Properties-APIs\/ba-p\/434400\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">File Properties<\/A> &#8211; can be added and accessed both manually and programmatically.<\/LI><br \/>\n<LI>Block Labels &#8211; Limited to the Draft environment and can be hidden if required.<\/LI><br \/>\n<LI>Property Tables &#8211; These are found on the Tools tab of the ribbon, Properties group, in the Part and Sheetmetal environments. Custom properties can be defined in a tabular format which can then be attached to geometrical objects like edges or faces. This information can also be queried, both interactively and using the API.<\/LI><br \/>\n<\/OL><\/p>\n<p><P>All of the above information is accessible to the end user by one means or the other though.<\/P><\/p>\n<p><P>There are often scenarios in programming where information needs to be attached to geometrical entities in Solid Edge and retrieved without being exposed to the user. Attribute sets can be used for this as described in this article.<\/P><br \/>\n<P><span class=\"lia-inline-image-display-wrapper lia-image-align-center\" style=\"width: 347px;\"><img decoding=\"async\" src=\"http:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/8\/2019\/09\/MetaData3-1.png\" alt=\"MetaData3.png\" title=\"MetaData3.png\" \/><\/span><\/P><\/p>\n<p><P>To attach an attribute set called &#8220;RouteDataSet&#8221; to an object, say a Line2d:<\/P><\/p>\n<p><PRE>Dim seAttrSet As Object = Nothing<\/p>\n<p>seAttrSet = seLine2d.AttributeSets.Add(&#8220;RouteDataSet&#8221;)<\/PRE><\/p>\n<p><P><STRONG><span class=\"lia-inline-image-display-wrapper lia-image-align-inline\" style=\"width: 30px;\"><img decoding=\"async\" src=\"http:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/8\/2019\/09\/TipIcon-64.png\" alt=\"TipIcon.png\" title=\"TipIcon.png\" \/><\/span>Note<\/STRONG>: Besides this, AttributeSets has the usual Remove and Item methods and the Count property.<\/P><\/p>\n<p><P>Declare datasets and assign values to add to the attribute set:<\/P><\/p>\n<p><PRE>Dim sData As String = String.Empty<br \/>\nDim bData As Boolean = False<br \/>\nDim iData As Integer = 0<\/p>\n<p>sData = &#8220;GTR001N4&#8221;<br \/>\nbData = True<br \/>\niData = 155<\/PRE><\/p>\n<p><P>Add each type of data to the set using the appropriate attribute type constant:<\/P><\/p>\n<p><PRE>seAttrSet.Add(&#8220;<STRONG>RouteName<\/STRONG>&#8220;, SolidEdgeConstants.AttributeTypeConstants.seStringANSI)<br \/>\nseAttrSet.<STRONG>RouteName<\/STRONG> = sData<\/p>\n<p>seAttrSet.Add(&#8220;<STRONG>IncludedInPaintCalculations<\/STRONG>&#8220;,SolidEdgeConstants.AttributeTypeConstants.seBoolean)<br \/>\nseAttrSet.<STRONG>IncludedInPaintCalculations<\/STRONG> = bData<br \/>\n&nbsp;<br \/>\nseAttrSet.Add(&#8220;<STRONG>EstimatedLength<\/STRONG>&#8220;, SolidEdgeConstants.AttributeTypeConstants.seInteger)<br \/>\nseAttrSet.<STRONG>EstimatedLength<\/STRONG> = iData<\/PRE><\/p>\n<p><P>Note how the first String argument which is the name of the attribute set automatically becomes a property on the next line when assigning it a value. This facilitates adding any number of named attributes to a set.<\/P><\/p>\n<p><P>The other data types are:<\/P><\/p>\n<p><P><span class=\"lia-inline-image-display-wrapper lia-image-align-center\" style=\"width: 363px;\"><img decoding=\"async\" src=\"http:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/8\/2019\/09\/AA02-1.png\" alt=\"AA02.png\" title=\"AA02.png\" \/><\/span><\/P><\/p>\n<p><P><STRONG><span class=\"lia-inline-image-display-wrapper lia-image-align-inline\" style=\"width: 30px;\"><img decoding=\"async\" src=\"http:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/8\/2019\/09\/TipIcon-64.png\" alt=\"TipIcon.png\" title=\"TipIcon.png\" \/><\/span>Note<\/STRONG>: Besides this, the AttributeSet has the usual Remove and Item methods and the Count and SetName properties where the later returns the name of an attribute set.<\/P><\/p>\n<p><P>To check the existence of an attribute set on an object, an additional method called IsAttributeSetPresent can be used:<\/P><\/p>\n<p><PRE>If seLine2d.IsAttributeSetPresent(&#8220;RouteDataSet&#8221;) Then<br \/>\n&nbsp; seAttrSet = seLine2d.AttributeSets(&#8220;RouteDataSet&#8221;)<\/p>\n<p>&nbsp; seAttribute = seAttrSet(&#8220;RouteName&#8221;)<br \/>\n&nbsp; sData = seAttribute.Value()<br \/>\n&nbsp;<br \/>\n&nbsp; seAttribute = seAttrSet(&#8220;IncludedInPaintCalculations&#8221;)<br \/>\n&nbsp; bData = seAttribute.Value()<br \/>\n&nbsp;<br \/>\n&nbsp; seAttribute = seAttrSet(&#8220;EstimatedLength&#8221;)<br \/>\n&nbsp; iData = seAttribute.Value()<br \/>\nEnd If<\/PRE><\/p>\n<p><P>Here&#8217;s a simple application to illustrate attribute sets:<\/P><\/p>\n<p><P><span class=\"lia-inline-image-display-wrapper lia-image-align-center\" style=\"width: 462px;\"><img decoding=\"async\" src=\"http:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/8\/2019\/09\/AA05-1.png\" alt=\"AA05.png\" title=\"AA05.png\" \/><\/span><\/P><\/p>\n<p><P>And the source code is as below. Try this with a line selected on a drawing sheet:<\/P><\/p>\n<p><PRE>Imports SolidEdgeFramework<br \/>\nImports SolidEdgeFrameworkSupport<br \/>\n&nbsp;<br \/>\nPublic Class Form1<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim seApp As SolidEdgeFramework.Application = Nothing<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim seDoc As SolidEdgeDocument = Nothing<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim seSel As SelectSet = Nothing<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim seLine2d As Line2d = Nothing<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim seAttrSet As Object = Nothing<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim seAttribute As Object = Nothing<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim sData As String = String.Empty<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim bData As Boolean = False<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim iData As Integer = 0<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seApp = Runtime.InteropServices.Marshal.GetActiveObject(&#8220;SolidEdge.Application&#8221;)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seDoc = seApp.ActiveDocument<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Sub<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seSel = seDoc.SelectSet<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seLine2d = seSel.Item(1)<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seAttrSet = seLine2d.AttributeSets.Add(&#8220;RouteDataSet&#8221;)<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sData = &#8220;GTR001N4&#8221;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bData = True<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iData = 155<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seAttrSet.Add(&#8220;RouteName&#8221;, SolidEdgeConstants.AttributeTypeConstants.seStringANSI)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seAttrSet.RouteName = sData<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seAttrSet.Add(&#8220;IncludedInPaintCalculations&#8221;, SolidEdgeConstants.AttributeTypeConstants.seBoolean)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seAttrSet.IncludedInPaintCalculations = bData<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seAttrSet.Add(&#8220;EstimatedLength&#8221;, SolidEdgeConstants.AttributeTypeConstants.seInteger)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seAttrSet.EstimatedLength = iData<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Sub<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seSel = seDoc.SelectSet<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seLine2d = seSel.Item(1)<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If seLine2d.IsAttributeSetPresent(&#8220;RouteDataSet&#8221;) Then<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seAttrSet = seLine2d.AttributeSets(&#8220;RouteDataSet&#8221;)<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seAttribute = seAttrSet(&#8220;RouteName&#8221;)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sData = seAttribute.Value()<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seAttribute = seAttrSet(&#8220;IncludedInPaintCalculations&#8221;)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bData = seAttribute.Value()<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seAttribute = seAttrSet(&#8220;EstimatedLength&#8221;)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iData = seAttribute.Value()<br \/>\n&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show(&#8220;String Data = &#8221; &amp; sData &amp; vbCrLf &amp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;Boolean Data = &#8221; &amp; bData &amp; vbCrLf &amp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;Numerical Data = &#8221; &amp; iData &amp; vbCrLf<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Sub<br \/>\nEnd Class<\/PRE><\/p>\n<p><P>Most graphics objects support AttributeSets in the Part, Sheetmetal, Draft and Assembly environments. Some common examples are:<\/P><\/p>\n<p><OL><br \/>\n<LI><STRONG>Part<\/STRONG>: Sketch, Line2d, Circle2d, Arc2d, Profile, CoordinateSystem, RefPlane, etc.<\/LI><br \/>\n<LI><STRONG>Assembly<\/STRONG>: All those from Part and additionally GroundRelation, Occurrence, Tube, Wire, AsmRefPlane, etc.<\/LI><br \/>\n<LI><STRONG>Draft<\/STRONG>: DrawingView, Layer, Group, Sheet, etc.<\/LI><br \/>\n<\/OL><\/p>\n<p><P><STRONG><span class=\"lia-inline-image-display-wrapper lia-image-align-inline\" style=\"width: 30px;\"><img decoding=\"async\" src=\"http:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/8\/2019\/09\/TipIcon-64.png\" alt=\"TipIcon.png\" title=\"TipIcon.png\" \/><\/span>Tip<\/STRONG>: Solid Edge Document objects themselves do not directly support attribute sets but there is an easy way to store&nbsp;attributes at the document level. Here are some suggestions. Use the 2D Model Sheet in Draft and the base coordinate systems in the 3D environments since these objects are guaranteed in the respective file types. <a href=\"https:\/\/community.plm.automation.siemens.com\/t5\/Solid-Edge-Blog\/All-about-Sheets-using-the-Solid-Edge-API-Part-1\/ba-p\/500657\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Read an article on how to access the 2D Model Sheet using the API here<\/A>.<\/P><\/p>\n<p><P>Another important&nbsp;feature of the attributes scheme is querying which can be done at the document level.&nbsp;To assess how many objects have the &#8220;RouteDataSet&#8221; attribute set in a document:<\/P><\/p>\n<p><PRE>Dim seRouteObjects As SolidEdgeFramework.QueryObjects = <BR \/>seDocument.AttributeQuery.AttributeQuery.QueryByName(&#8220;RouteDataSet&#8221;, &#8220;RouteName&#8221;)<br \/>\n<\/PRE><\/p>\n<p><P>Then you can count the number of objects and access an item:<\/P><br \/>\n<P>&nbsp;&nbsp;<\/P><br \/>\n<PRE>seRouteObjects.Count<br \/>\nseRouteObjects.Item<\/PRE><\/p>\n<p><P>The <a href=\"https:\/\/www.plmappmarketplace.com\/store\/plmapp\/en_US\/pd\/productID.326885100\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Revision Notes app<\/A> also uses attribute sets extensively, for example, to differentiate a revision note group from other groups.<\/P><br \/>\n<P>&nbsp;<span class=\"lia-inline-image-display-wrapper lia-image-align-center\" style=\"width: 351px;\"><img decoding=\"async\" src=\"http:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/8\/2019\/09\/03-1.png\" alt=\"03.png\" title=\"03.png\" \/><\/span><\/P><\/p>\n<p><P>Hope you find many uses for this hidden gem of the Solid Edge API in your apps as well.<\/P><\/p>\n<p><P>~Tushar Suradkar<\/P><br \/>\n<P><a href=\"http:\/\/www.surfandcode.in\/2014\/01\/index-of-all-tutorials-on-this-solid.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">www.SurfAndCode.IN<\/A><\/P><br \/>\n<P><a href=\"http:\/\/www.CADVertex.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">www.CADVertex.com<\/A><\/P><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;<br \/>\n Textual information in the form of metadata can be added&nbsp;in Solid Edge in various ways: <\/p>\n<p> File Properties &#8211; can be added and accessed both manually and programmatically.<br \/>\n Bl&#8230;<\/p>\n","protected":false},"author":42979,"featured_media":3323,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1,183,96],"tags":[33],"industry":[],"product":[],"coauthors":[],"class_list":["post-3305","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","category-product-updates","category-tips-tricks","tag-developer"],"featured_image_url":"https:\/\/blogs.stage.sw.siemens.com\/wp-content\/uploads\/sites\/8\/2019\/09\/03-1.png","_links":{"self":[{"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/posts\/3305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/users\/42979"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/comments?post=3305"}],"version-history":[{"count":6,"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/posts\/3305\/revisions"}],"predecessor-version":[{"id":3324,"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/posts\/3305\/revisions\/3324"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/media\/3323"}],"wp:attachment":[{"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/media?parent=3305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/categories?post=3305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/tags?post=3305"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/industry?post=3305"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/product?post=3305"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.stage.sw.siemens.com\/solidedge\/wp-json\/wp\/v2\/coauthors?post=3305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}