﻿{"id":36145,"date":"2012-03-14T21:31:43","date_gmt":"2012-03-14T13:31:43","guid":{"rendered":"http:\/\/www.lanmaowang.com\/word\/?p=36145"},"modified":"2015-03-31T22:19:23","modified_gmt":"2015-03-31T14:19:23","slug":"length-of-the-gain-curve-in-autocad-vba-code","status":"publish","type":"post","link":"http:\/\/www.lanmaowang.com\/?p=36145","title":{"rendered":"AutoCAD\u4e2d\u83b7\u5f97\u66f2\u7ebf\u957f\u5ea6\u7684VBA\u4ee3\u7801"},"content":{"rendered":"<pre class=\"brush:vb;toolbar:false\">Option&nbsp;Explicit\r\nFunction&nbsp;TotLen(oSset&nbsp;As&nbsp;AcadSelectionSet)&nbsp;As&nbsp;Double\r\nDim&nbsp;oEnt&nbsp;As&nbsp;AcadEntity\r\nFor&nbsp;Each&nbsp;oEnt&nbsp;In&nbsp;oSset\r\n&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;TypeOf&nbsp;oEnt&nbsp;Is&nbsp;AcadPolyline&nbsp;Or&nbsp;_\r\n&nbsp;&nbsp;&nbsp;&nbsp;TypeOf&nbsp;oEnt&nbsp;Is&nbsp;AcadLWPolyline&nbsp;Or&nbsp;_\r\n&nbsp;&nbsp;&nbsp;&nbsp;TypeOf&nbsp;oEnt&nbsp;Is&nbsp;AcadLine&nbsp;Then\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TotLen&nbsp;=&nbsp;TotLen&nbsp;+&nbsp;oEnt.Length\r\n&nbsp;&nbsp;&nbsp;&nbsp;ElseIf&nbsp;TypeOf&nbsp;oEnt&nbsp;Is&nbsp;AcadArc&nbsp;Then\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TotLen&nbsp;=&nbsp;TotLen&nbsp;+&nbsp;oEnt.ArcLength\r\n&nbsp;&nbsp;&nbsp;&nbsp;ElseIf&nbsp;TypeOf&nbsp;oEnt&nbsp;Is&nbsp;AcadCircle&nbsp;Then\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TotLen&nbsp;=&nbsp;TotLen&nbsp;+&nbsp;oEnt.Circumference\r\n&nbsp;&nbsp;&nbsp;&nbsp;ElseIf&nbsp;TypeOf&nbsp;oEnt&nbsp;Is&nbsp;AcadSpline&nbsp;Then\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TotLen&nbsp;=&nbsp;TotLen&nbsp;+&nbsp;GetCurveLength(oEnt)\r\n&nbsp;&nbsp;&nbsp;&nbsp;ElseIf&nbsp;TypeOf&nbsp;oEnt&nbsp;Is&nbsp;AcadEllipse&nbsp;Then\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TotLen&nbsp;=&nbsp;TotLen&nbsp;+&nbsp;GetCurveLength(oEnt)\r\n&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If\r\nNext&nbsp;oEnt\r\nEnd&nbsp;Function\r\nFunction&nbsp;GetCurveLength(oEnt&nbsp;As&nbsp;AcadEntity)&nbsp;As&nbsp;Double\r\nDim&nbsp;sVar\r\nsVar&nbsp;=&nbsp;0\r\nDim&nbsp;strCom&nbsp;As&nbsp;String\r\nWith&nbsp;ThisDrawing\r\n.SetVariable&nbsp;&quot;USERR1&quot;,&nbsp;sVar\r\n.SendCommand&nbsp;&quot;(vl-load-com)&quot;&nbsp;&amp;&nbsp;vbCr\r\nstrCom&nbsp;=&nbsp;&quot;(setvar&nbsp;&quot;&nbsp;&amp;&nbsp;Chr(34)&nbsp;&amp;&nbsp;&quot;USERR1&quot;&nbsp;&amp;&nbsp;Chr(34)&nbsp;&amp;&nbsp;Chr(32)&nbsp;&amp;&nbsp;&quot;(vlax-curve-getdistatparam&nbsp;(vlax-ename-&gt;vla-object&nbsp;(handent&nbsp;&quot;&nbsp;&amp;&nbsp;Chr(34)&nbsp;&amp;&nbsp;oEnt.Handle&nbsp;&amp;&nbsp;Chr(34)&nbsp;&amp;&nbsp;&quot;))&nbsp;(vlax-curve-getendparam&nbsp;(vlax-ename-&gt;vla-object&nbsp;(handent&nbsp;&quot;&nbsp;&amp;&nbsp;Chr(34)&nbsp;&amp;&nbsp;oEnt.Handle&nbsp;&amp;&nbsp;Chr(34)&nbsp;&amp;&nbsp;&quot;)))))&quot;&nbsp;&amp;&nbsp;vbCr\r\n.SendCommand&nbsp;strCom\r\nGetCurveLength&nbsp;=&nbsp;.GetVariable(&quot;USERR1&quot;)\r\nEnd&nbsp;With\r\nEnd&nbsp;Function\r\nSub&nbsp;TryIt()\r\nDim&nbsp;oSset&nbsp;As&nbsp;AcadSelectionSet\r\nDim&nbsp;oEnt\r\nDim&nbsp;fcode(0)&nbsp;As&nbsp;Integer\r\nDim&nbsp;fData(0)&nbsp;As&nbsp;Variant\r\nDim&nbsp;dxfCode,&nbsp;dxfdata\r\nDim&nbsp;i&nbsp;As&nbsp;Integer\r\nDim&nbsp;SetName&nbsp;As&nbsp;String\r\n&#39;&nbsp;create&nbsp;filter\r\nfcode(0)&nbsp;=&nbsp;0\r\n&#39;&nbsp;include&nbsp;the&nbsp;following&nbsp;entity&nbsp;types:\r\n&#39;&nbsp;LINE,&nbsp;LWPOLYLINE,&nbsp;POLYLINE,&nbsp;SPLINE,&nbsp;ARC,&nbsp;CIRCLE,&nbsp;ELLIPSE:\r\nfData(0)&nbsp;=&nbsp;&quot;*LINE,ARC,CIRCLE,ELLIPSE&quot;\r\n&#39;\r\ndxfCode&nbsp;=&nbsp;fcode\r\ndxfdata&nbsp;=&nbsp;fData\r\n&#39;\r\nSetName&nbsp;=&nbsp;&quot;$Total$&quot;\r\n&#39;&nbsp;delete&nbsp;all&nbsp;selection&nbsp;sets&nbsp;to&nbsp;make&nbsp;sure&nbsp;that&nbsp;named&nbsp;selection&nbsp;does&nbsp;not&nbsp;exist\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;With&nbsp;ThisDrawing.SelectionSets\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;While&nbsp;.Count&nbsp;&gt;&nbsp;0\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Item(0).Delete\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wend\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;With\r\n&#39;&nbsp;add&nbsp;empty&nbsp;selection&nbsp;into&nbsp;selectionsets&nbsp;collection\r\nSet&nbsp;oSset&nbsp;=&nbsp;ThisDrawing.SelectionSets.Add(SetName)\r\n&#39;&nbsp;select&nbsp;on&nbsp;screen\r\noSset.SelectOnScreen&nbsp;dxfCode,&nbsp;dxfdata\r\n&#39;&nbsp;display&nbsp;result\r\nIf&nbsp;oSset.Count&nbsp;&gt;&nbsp;0&nbsp;Then\r\nMsgBox&nbsp;CStr(Round(TotLen(oSset),&nbsp;3)),&nbsp;vbInformation,&nbsp;&quot;Total&nbsp;Length&quot;\r\nElse\r\nMsgBox&nbsp;&quot;0&nbsp;selected,&nbsp;try&nbsp;again&quot;\r\nEnd&nbsp;If\r\nEnd&nbsp;Sub<\/pre>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Option&nbsp;Explicit Function&nbsp;TotLen(oSset&nbsp;As [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":36146,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[193],"tags":[194,195,196,197],"_links":{"self":[{"href":"http:\/\/www.lanmaowang.com\/index.php?rest_route=\/wp\/v2\/posts\/36145"}],"collection":[{"href":"http:\/\/www.lanmaowang.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.lanmaowang.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.lanmaowang.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.lanmaowang.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=36145"}],"version-history":[{"count":1,"href":"http:\/\/www.lanmaowang.com\/index.php?rest_route=\/wp\/v2\/posts\/36145\/revisions"}],"predecessor-version":[{"id":36147,"href":"http:\/\/www.lanmaowang.com\/index.php?rest_route=\/wp\/v2\/posts\/36145\/revisions\/36147"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.lanmaowang.com\/index.php?rest_route=\/wp\/v2\/media\/36146"}],"wp:attachment":[{"href":"http:\/\/www.lanmaowang.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=36145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.lanmaowang.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=36145"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.lanmaowang.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=36145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}