{"id":948,"date":"2024-06-28T07:59:04","date_gmt":"2024-06-27T23:59:04","guid":{"rendered":"http:\/\/www.wyrcad.com\/?p=948"},"modified":"2024-07-03T11:10:00","modified_gmt":"2024-07-03T03:10:00","slug":"autocad-%e5%88%a9%e7%94%a8%e5%8f%a5%e6%9f%84%e7%bb%91%e5%ae%9a%e5%9b%be%e5%85%83","status":"publish","type":"post","link":"https:\/\/www.wyrcad.com\/?p=948","title":{"rendered":"AutoCAD \u5229\u7528\u53e5\u67c4(Handle)\u7ed1\u5b9a\u56fe\u5143"},"content":{"rendered":"\n<p>\u2018\u672c\u4f8b\u6f14\u793a\u5206\u591a\u6b21\u7ed8\u5236\u56fe\u5f62,\u800c\u6bcf\u6b21\u6240\u7ed8\u56fe\u5143\u4e0e\u5f53\u524d\u8fdb\u7a0b\u6240\u7ed8\u4e00\u822c\u65e0\u4e8c,\u5373,\u53ef\u4ee5\u5bf9\u5176\u8fdb\u884c\u4efb\u4f55\u64cd\u4f5c, \u7ed8\u5236\u56fe\u5143\u7684\u6570\u636e\u5b58\u50a8\u4e8e Dictionarys,\u4e0b\u6b21\u4ece Dictionarys \u4e2d\u8bfb\u51fa\u6570\u636e\u52a0\u4ee5\u5229\u7528<\/p>\n\n\n\n<p>\u2018\u7ed1\u5b9a AutoCAD<br>Dim I As Integer, J As Integer<br>Dim oAutoCAD As Object<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>Dim oLine() As Object<br>Dim LineCount As Integer<br>Public vPickPoint As Variant<br>Dim dStartPoint(0 To 2) As Double<br>Dim dEndPoint(0 To 2) As Double<\/p>\n\n\n\n<p>\u2018\u5728 Dictionarys \u4e2d\u67e5\u627e \u201cLine\u201d\uff0c\u5e76\u8bfb\u53d6\u201dHandle\u201d App \u7684 &#8220;1000&#8221; \u4f4d\u7801\u7684\u503c<br>Dim sTemp As String<br>sTemp = <a href=\"https:\/\/www.wyrcad.com\/?p=933\">GetDicString<\/a>(oDraw, \u201cLine\u201d, \u201cHandle\u201d)<br>sTemp = <a href=\"https:\/\/www.wyrcad.com\/?p=785\">PurgeTerminal<\/a>(sTemp, \u201c|\u201d)<\/p>\n\n\n\n<p>\u2018\u786e\u5b9a\u8d77\u70b9<br>Set oUtility = oDraw.Utility<br>If sTemp = \u201c\u201d Then \u2018\u7b2c\u4e00\u6b21<br>LineCount = 0<br>vPickPoint = oUtility.GetPoint(, \u201c\u9009\u53d6\u7ebf\u6bb5\u8d77\u70b9!\u201d)<br>dStartPoint(0) = vPickPoint(0)<br>dStartPoint(1) = vPickPoint(1)<br>dStartPoint(2) = vPickPoint(2)<br>Else \u2018Dictionary \u6709\u6570\u636e\u5219\u5524\u9192\u5bf9\u8c61<br>Dim TempArray As Variant<br>TempArray = Split(sTemp, \u201c|\u201d, -1, vbTextCompare)<br>For I = LBound(TempArray) To UBound(TempArray)<br>LineCount = LineCount + 1<br>ReDim Preserve oLine(1 To LineCount)<br>Set oLine(LineCount) = oDraw.HandleToObject(TempArray(I))<br>Next I<br>Dim vStart As Variant, vEnd As Variant<br>vStart = oLine(LineCount).StartPoint<br>vEnd = oLine(LineCount).EndPoint \u2018AutoCAD \u7279\u522b\u4e4b\u5904<br>dStartPoint(0) = vEnd(0)<br>dStartPoint(1) = vEnd(1)<br>dStartPoint(2) = vEnd(2)<br>End If<\/p>\n\n\n\n<p>\u2018\u7ed8\u5236(\u6216\u589e\u52a0)\u7ebf\u6bb5<br>vPickPoint = oUtility.GetPoint(dStartPoint, \u201c\u9009\u53d6\u7ebf\u6bb5\u7ec8\u70b9!\u201d)<br>dEndPoint(0) = vPickPoint(0)<br>dEndPoint(1) = vPickPoint(1)<br>dEndPoint(2) = vPickPoint(2)<br>LineCount = LineCount + 1<br>ReDim Preserve oLine(1 To LineCount)<br>Set oLine(LineCount) = oDraw.ModelSpace.AddLine(dStartPoint, dEndPoint)<\/p>\n\n\n\n<p>\u2018\u5728 Dictionarys \u4e2d\u751f\u6210\u65b0\u7684(\u6216\u66f4\u65b0) Dictionary\uff0c\u5efa\u7acb App \u5e76\u4e3a &#8220;1000&#8221; \u4f4d\u7801\u8d4b\u503c<br>Dim lRet As Long<br>Dim sDic As String<br>Dim sApp As String<br>Dim sValue As String<br>sDic = \u201cLine\u201d<br>sApp = \u201cHandle\u201d<br>For I = 1 To LineCount<br>sValue = sValue &amp; \u201c|\u201d &amp; oLine(I).Handle<br>Next I<br>sTemp = <a href=\"https:\/\/www.wyrcad.com\/?p=785\">PurgeTerminal<\/a>(sValue, \u201c|\u201d)<br>lRet = <a href=\"https:\/\/www.wyrcad.com\/?p=905\">SetDicString<\/a>(oDraw, sDic, sApp, sValue)<\/p>\n\n\n\n<p>\u2018\u6d4b\u8bd5\u4e00:\u7edf\u8ba1\u957f\u5ea6<br>Dim dLength As Double<br>For I = 1 To LineCount<br>dLength = dLength + oLine(I).Length<br>Next I<br>Debug.Print \u201c\u7ebf\u6bb5\u6839\u6570:\u201d &amp; CStr(LineCount)<br>Debug.Print \u201c\u7ebf\u6bb5\u603b\u957f:\u201d &amp; CStr(dLength)<\/p>\n\n\n\n<p>\u2018\u6d4b\u8bd5\u4e8c:\u90e8\u5206\u7ebf\u6bb5\u5de6\u79fb,\u90e8\u5206\u7ebf\u6bb5\u53f3\u79fb<br>Dim point1(0 To 2) As Double<br>Dim point2(0 To 2) As Double<br>point1(0) = 0: point1(1) = 0: point1(2) = 0<br>point2(0) = 200: point2(1) = 0: point2(2) = 0<br>For I = 1 To LineCount Step 2<br>If I &lt;= LineCount Then oLine(I).Move point1, point2 \u20181, 3, 5, 7<br>If I + 1 &lt;= LineCount Then oLine(I + 1).Move point2, point1 \u20182, 4, 6, 8<br>Next I<\/p>\n\n\n\n<p>\u2018\u6d4b\u8bd5\u4e09:\u8bc6\u522b\u5c4f\u5e55\u6240\u9009\u56fe\u5143<br>\u2018\u5728 Dictionarys \u4e2d\u67e5\u627e \u201cLine\u201d\uff0c\u5e76\u8bfb\u53d6\u201dHandle\u201d App &#8220;1000&#8221; \u4f4d\u7801\u7684\u503c<br>Dim oSelset As Object, oItem As Object<br>sTemp = <a href=\"https:\/\/www.wyrcad.com\/?p=933\">GetDicString<\/a>(oDraw, \u201cLine\u201d, \u201cHandle\u201d)<br>sTemp = <a href=\"https:\/\/www.wyrcad.com\/?p=785\">PurgeTerminal<\/a>(sTemp, \u201c|\u201d)<br>Dim TempArray As Variant<br>TempArray = Split(sTemp, \u201c|\u201d, -1, vbTextCompare)<br>Dim iIndex As Integer<br>Dim TempName As String<br>TempName = <a href=\"https:\/\/www.wyrcad.com\/?p=785\">SelName<\/a>(8)<br>If <a href=\"https:\/\/www.wyrcad.com\/?p=907\">SetExist<\/a>(oDraw, TempName) Then oDraw.SelectionSets.Item(TempName).Delete<br>Set oSelset = oDraw.SelectionSets.Add(TempName)<br>oDraw.Activate<br>oSelset.SelectOnScreen<br>\u2018Debug.Print \u201coSelSet.Count\u201d &amp; Space$(1) &amp;\u201d=\u201d &amp; Space$(1) &amp; oSelSet.Count<br>If oSelset.Count &lt;= 0 Then Exit Sub<br>For I = 0 To oSelset.Count \u2013 1<br>iIndex = <a href=\"https:\/\/www.wyrcad.com\/?p=798\">IndexInArray<\/a>(oSelset.Item(I).Handle, TempArray)<br>If iIndex = -1 Then<br>Debug.Print \u201c\u9009\u62e9\u4e86\u96c6\u5916\u56fe\u5143.\u201d<br>Else<br>Debug.Print \u201c\u9009\u62e9\u4e86\u201d &amp; CStr(iIndex + 1) &amp; \u201c\u53f7\u7ebf\u6bb5.\u201d<br>End If<br>Next I<br>oSelset.Delete<br>Set oSelset = Nothing<br>Set oItem = Nothing<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u2018\u672c\u4f8b\u6f14\u793a\u5206\u591a\u6b21\u7ed8\u5236\u56fe\u5f62,\u800c\u6bcf\u6b21\u6240\u7ed8\u56fe\u5143\u4e0e\u5f53\u524d\u8fdb\u7a0b\u6240\u7ed8\u4e00\u822c\u65e0\u4e8c,\u5373,\u53ef\u4ee5\u5bf9\u5176\u8fdb\u884c\u4efb\u4f55\u64cd\u4f5c, \u7ed8\u5236\u56fe\u5143\u7684\u6570\u636e\u5b58\u50a8 &hellip; <a href=\"https:\/\/www.wyrcad.com\/?p=948\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201cAutoCAD \u5229\u7528\u53e5\u67c4(Handle)\u7ed1\u5b9a\u56fe\u5143\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-948","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\/948","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=948"}],"version-history":[{"count":14,"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=\/wp\/v2\/posts\/948\/revisions"}],"predecessor-version":[{"id":1049,"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=\/wp\/v2\/posts\/948\/revisions\/1049"}],"wp:attachment":[{"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wyrcad.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}