找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3818|回复: 37

[编程申请]:如何将多条线段的长度自动计算求和?

[复制链接]
发表于 2004-1-7 21:06:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
工作中 遇到要测量一条条线段长度,然后手工加起来
我是用list命令算出线段长度,有没有一个程序可以测量线段长度,最后求和?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-1-8 03:29:13 | 显示全部楼层
论坛上有许多这样的帖子,请参考:
http://www.xdcad.net/forum/showt ... hlight=%D7%DC%B3%A4
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-8 10:12:18 | 显示全部楼层
XD工具箱中就有这样的命令.

提示:演示中漏掉了计算曲线两点间长度功能。 eachy

演示重新做好,补上了漏掉的功能[/COLOR]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-8 17:16:04 | 显示全部楼层
我的这个lisp不错,完全可以达到你的要求!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-8 18:41:22 | 显示全部楼层
to eachy  收到,我会重新做一遍传上来的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-8 19:54:48 | 显示全部楼层
最初由 duely 发布
[B]我的这个lisp不错,完全可以达到你的要求! [/B]

真的不错,很好用
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-11 14:47:34 | 显示全部楼层
请教,多义线的长度属性是怎么得到的,还有曲线。
我不会lisp,希望用vb运用,得到多义线的长度。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-1-11 15:32:41 | 显示全部楼层
最初由 ShiwJeff 发布
[B]请教,多义线的长度属性是怎么得到的,还有曲线。
我不会lisp,希望用vb运用,得到多义线的长度。 [/B]

转贴一个Pline的,支持任意曲线的要用到vlax函数,VBA论坛有过讨论,引入个cls类文件
Curve
Curve.cls is a wrapper module that grants objected-oriented access to VisualLISP's VLAX-CURVE functions. Using Curve, you can determine such things as the length of a spline, the segment of a polyline selected by the user or the coordinates of a point a given distance along the perimeter of an arc.

Use of this module also requires the use of the VLAX class module. For more information on VLAX-CURVE functions and their operation, look up the appropriate function in the VisualLISP online help.


  1. [php]
  2. Public Function GetPLineLength(PLine As AcadObject) As Double

  3.     Dim intCrdCnt As Integer, varCoords As Variant, dblLength As Double
  4.     Dim dblChord As Double, dblInclAng As Double, dblAng As Double, dblRad As Double
  5.     Dim Pt1 As Variant, Pt2 As Variant, tmp, Points, i As Long

  6.     varCoords = PLine.Coordinates
  7.     On Error Resume Next
  8.     If PLine.Type <> 0 Then
  9.         If Err.Number = 0 Then
  10.             MsgBox "Cannot get length from this type of polyline.", vbExclamation, "GetPLineLength"
  11.             Exit Function
  12.         End If
  13.     End If
  14.     On Error GoTo 0
  15.    
  16.     If PLine.Closed Then
  17.         tmp = PLine.Coordinate(0)
  18.         For i = LBound(tmp) To UBound(tmp)
  19.             ReDim Preserve varCoords(LBound(varCoords) To UBound(varCoords) + 1)
  20.             varCoords(UBound(varCoords)) = tmp(i)
  21.         Next
  22.     End If
  23.    
  24.     Points = SplitPoints(varCoords, UBound(PLine.Coordinate(0)))
  25.    
  26.     For intCrdCnt = LBound(Points) To UBound(Points) - 1
  27.         If PLine.ObjectName = "AcDb3dPolyline" Or PLine.GetBulge = 0 Then
  28.           dblLength = dblLength + Distance(Points(intCrdCnt), Points(intCrdCnt + 1))
  29.         Else
  30.             dblChord = Distance(Points(intCrdCnt), Points(intCrdCnt + 1))
  31.             dblInclAng = Atn(Abs(PLine.GetBulge(intCrdCnt))) * 4
  32.             dblAng = (dblInclAng / 2) - ((Atn(1) * 4) / 2)
  33.             dblRad = (dblChord / 2) / (Cos(dblAng))
  34.             dblLength = dblLength + (dblInclAng * dblRad)
  35.         End If
  36.     Next
  37.    
  38.     GetPLineLength = dblLength

  39. End Function


  40. [/php]



Purpose
Returns the length of a polyline

Arguments
A polyline object

Example
Debug.Print GetPLineLength(objPline)

Notes
This function supports bulges
This function will not work with splined or fitted polylines
Author
R. Robert Bell
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-12 15:44:49 | 显示全部楼层
为什么量出来的长度与LIST量出的长度有出入啊,(我量的是一段直线不知是不是不适用于直线而是有限制)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-18 23:55:09 | 显示全部楼层
这个程序我正需要,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-19 03:24:41 | 显示全部楼层
]超级简短的vlisp代码,只用6行,现编的:
支持LINE,pline,spline,ARC,CIRCLE,ELLIPSE
http://www.xdcad.net/forum/showt ... d=744676#post744676
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-2 14:02:15 | 显示全部楼层
用"查询"命令不行吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-20 15:27:06 | 显示全部楼层
谢谢那么多同行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-28 14:29:40 | 显示全部楼层
3楼演示已经重新上传
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-23 09:44:00 | 显示全部楼层
下载来用用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-20 09:54 , Processed in 0.420310 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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