{"id":882,"date":"2024-06-25T08:39:16","date_gmt":"2024-06-25T00:39:16","guid":{"rendered":"http:\/\/www.wyrcad.com\/?p=882"},"modified":"2024-06-25T09:10:41","modified_gmt":"2024-06-25T01:10:41","slug":"882","status":"publish","type":"post","link":"https:\/\/www.wyrcad.com\/?p=882","title":{"rendered":"AutoCAD \u4ece\u56fe\u5143\u8bfb\u53d6\u6269\u5c55\u6570\u636e(XData)"},"content":{"rendered":"\n<p>&#8216;\u7ed1\u5b9a AutoCAD<br>Dim I As Integer, J As Integer<br>Dim oAutoCAD As Object \u2018AutoCAD Application \u672c\u8eab<br>Call BindAutoCAD(True)<br>Dim oDraw As Object \u2018AutoCAD \u591a\u6587\u6863\u4e4b\u4e00<\/p>\n\n\n\n<p>\u2018\u6253\u5f00\u5e76\u7ed1\u5b9a\u6587\u4ef6 D:\/Test.dwg<br>Set oDraw = oAutoCAD.Application.Documents.Open(\u201cD:\/Test.dwg\u201d)<\/p>\n\n\n\n<p>\u2018\u7ed1\u5b9a Microsoft Excel<br>Dim oExcel As Object \u2018Microsoft Excel Application \u672c\u8eab<br>Call BindExcel(True)<br>Dim oBook As Object \u2018Microsoft Excel \u591a\u5de5\u4f5c\u8584\u4e4b\u4e00<br>Dim oSheet As Object \u2018\u5de5\u4f5c\u8584\u7684\u5de5\u4f5c\u8868\u4e4b\u4e00<\/p>\n\n\n\n<p>\u2018\u6253\u5f00\u5e76\u7ed1\u5b9a\u6587\u4ef6 D:\/Test.xls<br>Set oBook = oExcel.Application.WorkBooks.Open(\u201cD:\/Test.xls\u201d)<\/p>\n\n\n\n<p>\u2018\u7ed1\u5b9a\u5df2\u6709\u5de5\u4f5c\u8868 Sheet1<br>Set oSheet = oBook.Sheets(\u201cSheet1\u201d)<\/p>\n\n\n\n<p>&#8216;\u8f93\u5165 App \u540d\u79f0<br>Dim sApp As String<br>sApp = InputBox(&#8220;Enter the app name of XData!&#8221;, &#8220;&#8221;, sApp, Me.Left + 1800, Me.Top + 2400)<br>&#8216;sApp \u4e3a\u7a7a\u8868\u793a\u6240\u6709 App<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"363\" height=\"139\" src=\"https:\/\/www.wyrcad.com\/wp-content\/uploads\/2024\/06\/Input.jpg\" alt=\"\" class=\"wp-image-893\" srcset=\"https:\/\/www.wyrcad.com\/wp-content\/uploads\/2024\/06\/Input.jpg 363w, https:\/\/www.wyrcad.com\/wp-content\/uploads\/2024\/06\/Input-300x115.jpg 300w\" sizes=\"auto, (max-width: 363px) 85vw, 363px\" \/><\/figure>\n\n\n\n<p>\u2018\u5c4f\u5e55\u9009\u62e9\u56fe\u5143<br>Dim PointPicked As Variant<br>Dim oEntity As Object<br>oDraw.Activate<br>oDraw.Utility.GetEntity oEntity, PointPicked<\/p>\n\n\n\n<p>&#8216;\u8bfb\u53d6\u6269\u5c55\u6570\u636e<br>Dim iType As Variant<br>Dim sValue As Variant<br>iType = DetachXData(oEntity, sApp, \u201cType\u201d)<br>sValue = DetachXData(oEntity, sApp, \u201cValue\u201d)<\/p>\n\n\n\n<p>\u2018\u6307\u5411 TargetRow \u884c\u7b2c\u4e00\u5217<br>TargetRow = <a href=\"https:\/\/www.wyrcad.com\/?p=806\">MaxRow<\/a>(oSheet) + 1 \u2018\u6709\u6587\u5b57\u7684\u6700\u5927\u884c<br>oSheet.Cells(TargetRow, 1).Select<br>oSheet.Rows(TargetRow).NumberFormatLocal = &#8220;@&#8221; &#8216;\u6587\u672c\u6a21\u5f0f<\/p>\n\n\n\n<p>\u2018\u5c55\u793a\u6269\u5c55\u6570\u636e<br>Dim I As Integer, J As Integer<br>For I = LBound(iType) To UBound(iType)<br>oSheet.Cells(1, <a href=\"https:\/\/www.wyrcad.com\/?p=806\">GetColumnNumber<\/a>(oSheet, iType(I), 1)) = iType(I)<br>oSheet.Cells(TargetRow, <a href=\"https:\/\/www.wyrcad.com\/?p=806\">GetColumnNumber<\/a>(oSheet, iType(I), 1)) = sValue(I)<br>Next I<br>For J = <a href=\"https:\/\/www.wyrcad.com\/?p=806\">MinColumn<\/a>(oSheet) To <a href=\"https:\/\/www.wyrcad.com\/?p=806\">MaxColumn<\/a>(oSheet)<br>oSheet.Columns(J).AutoFit \u2018\u8c03\u6574\u5217\u5bbd<br>Next J<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"586\" height=\"300\" src=\"https:\/\/www.wyrcad.com\/wp-content\/uploads\/2024\/06\/XData.jpg\" alt=\"\" class=\"wp-image-895\" srcset=\"https:\/\/www.wyrcad.com\/wp-content\/uploads\/2024\/06\/XData.jpg 586w, https:\/\/www.wyrcad.com\/wp-content\/uploads\/2024\/06\/XData-300x154.jpg 300w\" sizes=\"auto, (max-width: 586px) 85vw, 586px\" \/><\/figure>\n\n\n\n<p>Public Function DetachXData(ByVal oEntity As Object, Optional ByVal sApp As String = &#8220;&#8221;, Optional ByVal sScope As String = &#8220;&#8221;) As Variant<br>Dim I As Integer, J As Integer<br>&#8216; Return the xdata for the entity<br>Dim XTypeOut As Variant<br>Dim XValueOut As Variant<br>oEntity.GetXData sApp, XTypeOut, XValueOut<br>If Not IsArray(XTypeOut) Then Exit Function<br>If Not IsArray(XValueOut) Then Exit Function<br>Dim iArray() As Integer<br>Dim sArray() As String<br>Dim vTemp As Variant<br>Dim iCount As Integer<br>For I = LBound(XTypeOut) To UBound(XTypeOut)<br>If Not <a href=\"https:\/\/www.wyrcad.com\/?p=798\">IsInArray<\/a>(XTypeOut(I), iArray) Then<br>iCount = iCount + 1<br>ReDim Preserve iArray(0 To iCount &#8211; 1)<br>ReDim Preserve sArray(0 To iCount &#8211; 1)<br>iArray(iCount &#8211; 1) = XTypeOut(I)<br>End If<br>Next I<br>&#8216;IsMissing \u53ea\u5bf9 Variant \u53d8\u91cf\u6709\u6548<br>If IsMissing(sScope) Or sScope = &#8220;&#8221; Or InStr(1, sScope, &#8220;Type&#8221;, vbTextCompare) > 0 Then &#8216;DataType<br>DetachXData = iArray<br>Else &#8216;DataValue<br>For I = LBound(iArray) To UBound(iArray)<br>For J = LBound(XTypeOut) To UBound(XTypeOut)<br>If XTypeOut(J) = iArray(I) Then<br>If iArray(I) = 1010 Or iArray(I) = 1011 Or iArray(I) = 1012 Or iArray(I) = 1013 Then &#8216;\u4e09\u7ef4<br>vTemp = XValueOut(J)<br>sArray(I) = sArray(I) &amp; &#8220;|&#8221; &amp; vTemp(0) &amp; &#8220;,&#8221; &amp; vTemp(1) &amp; &#8220;,&#8221; &amp; vTemp(2)<br>Else<br>sArray(I) = sArray(I) &amp; &#8220;|&#8221; &amp; XValueOut(J)<br>End If<br>sArray(I) = <a href=\"https:\/\/www.wyrcad.com\/?p=785\">CutTerminal<\/a>(sArray(I), &#8220;|&#8221;)<br>Else<br>&#8216;Nothing<br>End If<br>Next J<br>Next I<br>DetachXData = sArray<br>End If<br>End Function<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8216;\u7ed1\u5b9a AutoCADDim I As Integer, J As IntegerDim oAut &hellip; <a href=\"https:\/\/www.wyrcad.com\/?p=882\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201cAutoCAD \u4ece\u56fe\u5143\u8bfb\u53d6\u6269\u5c55\u6570\u636e(XData)\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[24,17],"class_list":["post-882","post","type-post","status-publish","format-standard","hentry","category-bianchengyuandi","tag-vb","tag-biancheng"],"_links":{"self":[{"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=\/wp\/v2\/posts\/882","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=882"}],"version-history":[{"count":9,"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=\/wp\/v2\/posts\/882\/revisions"}],"predecessor-version":[{"id":899,"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=\/wp\/v2\/posts\/882\/revisions\/899"}],"wp:attachment":[{"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=882"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=882"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=882"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}