明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1506|回复: 4

长度求和?

[复制链接]
发表于 2011-1-8 13:48:45 | 显示全部楼层 |阅读模式
拾取直线的长度后,我想在命令行显示拾取直线长度之和 请问斑竹 这句代码该怎么写?  ed.WriteMessage(??????)
发表于 2011-1-8 19:23:23 | 显示全部楼层
  1.     <CommandMethod("SLenth")> Public Sub sumLineLength()
  2.         Dim db As Database = HostApplicationServices.WorkingDatabase
  3.         Dim ed As Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
  4.         Dim fType As TypedValue = New TypedValue(DxfCode.Start, "Line")
  5.         Dim fTypeList() As TypedValue = {fType}
  6.         Dim myFilter As New SelectionFilter(fTypeList)
  7.         Dim proSset As New PromptSelectionOptions
  8.         proSset.MessageForAdding = "Please choose some entities:"
  9.         Dim resSset As PromptSelectionResult = ed.GetSelection(proSset, myFilter)
  10.         Dim lineSset As SelectionSet = resSset.Value
  11.         Dim objIds As ObjectId() = lineSset.GetObjectIds()

  12.         If lineSset.Count = 0 Then
  13.         Else
  14.             Using trans As Transaction = db.TransactionManager.StartTransaction
  15.                 Dim lineLenth As Double = 0.0
  16.                 For Each objId As ObjectId In objIds
  17.                     Dim myLine As Line = trans.GetObject(objId, OpenMode.ForRead)
  18.                     lineLenth = lineLenth + myLine.Length()
  19.                 Next
  20.                 ed.WriteMessage(vbcrlf & "The total lines' length is:" & lineLenth.ToString)
  21.             End Using
  22.         End If
  23.     End Sub
 楼主| 发表于 2011-1-9 16:55:07 | 显示全部楼层
请问在C#中 该怎么写呢?小弟愚笨 恳请斑竹帮个忙
发表于 2011-1-9 19:32:41 | 显示全部楼层
  1.         [CommandMethod("t2")]
  2.         public static void Test2()
  3.         {
  4.             Document doc = Application.DocumentManager.MdiActiveDocument;
  5.             Database db = doc.Database;
  6.             Editor ed = doc.Editor;

  7.             var resSel =
  8.                 ed.GetSelection(
  9.                     new SelectionFilter(
  10.                         new TypedValue[]
  11.                         {
  12.                             new TypedValue(0, "line")
  13.                         }));

  14.             if (resSel.Status != PromptStatus.OK)
  15.                 return;

  16.             using (var tr = db.TransactionManager.StartTransaction())
  17.             {
  18.                 var sum =
  19.                     resSel.Value.GetObjectIds()
  20.                     .Select(id => tr.GetObject(id, OpenMode.ForRead) as Line)
  21.                     .Select(line => line.Length)
  22.                     .Sum();

  23.                 ed.WriteMessage("直线的总长度为:{0}", sum);
  24.             }

  25.         }
 楼主| 发表于 2011-1-10 21:21:42 | 显示全部楼层
感谢飞狐大哥 问题已经解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 22:39 , Processed in 0.154397 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表