找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1315|回复: 8

[求助]:不规则曲线上找点!

[复制链接]
发表于 2004-2-10 12:50:25 | 显示全部楼层 |阅读模式

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

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

×
已知:有一条不规则曲线(多义线)及其上面的某一点a
求:在该曲线上距已知点a距离为x的点


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

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-2-10 13:17:31 | 显示全部楼层

Re: [求助]:不规则曲线上找点!

最初由 jjxiao 发布
[B]已知:有一条不规则曲线(多义线)及其上面的某一点a
求:在该曲线上距已知点a距离为x的点


请赐教,拜谢 [/B]

利用Length命令辅助也可以找出来,先对多义线复制,然后都副本Break,去掉不需要的一侧,另一侧执行Length命令。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-2-11 17:23:24 | 显示全部楼层
已知:有一条不规则曲线(多义线)及其上面的某一点a
求:在该曲线上距已知点a距离为x的点

此距离是直线距离还是在曲线上的距离,如果是直线距离我已编了一函数
Function GetCurvePointAtDistAndPoint(ReturnObj As AcadEntity, Dist As Double, Point As ACAD_POINT) As Variant
    Dim ObjCurve As curve
    Set ObjCurve = New curve
    Set ObjCurve.Entity = ReturnObj
    Dim CircleObj As AcadCircle
    Set CircleObj = ThisDrawing.ModelSpace.AddCircle(Point, Dist)
    Dim IntPoints As Variant
    IntPoints = CircleObj.IntersectWith(ReturnObj, acExtendNone)
    CircleObj.Delete
    Dim retVal(2) As Double
    ' Print all the intersection points
    Dim i As Integer, j As Integer, k As Integer
    Dim Str As String
    Dim distance As Double
    distance = ObjCurve.GetDistanceAtPoint(Point)
    If VarType(IntPoints) <> vbEmpty Then
        For i = LBound(IntPoints) To UBound(IntPoints)
            retVal(0) = IntPoints(j)
            retVal(1) = IntPoints(j + 1)
            retVal(2) = IntPoints(j + 2)
            Str = "Intersection Point[" & k & "] is: " & IntPoints(j) & "," & IntPoints(j + 1) & "," & IntPoints(j + 2)
            Str = ""
            i = i + 2
            j = j + 3
            k = k + 1
            If ObjCurve.GetDistanceAtPoint(retVal) > ObjCurve.GetDistanceAtPoint(Point) Then
            GetCurvePointAtDistAndPoint = retVal
            Else
            End If
        Next
    End If
End Function


如果是曲线距离,则太简单了,去明镜通道看看VLAX类及曲线类函数操作

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

使用道具 举报

发表于 2004-2-11 18:20:58 | 显示全部楼层

Re: [求助]:不规则曲线上找点!

最初由 jjxiao 发布
[B]已知:有一条不规则曲线(多义线)及其上面的某一点a
求:在该曲线上距已知点a距离为x的点[/B]

那就是说,线知道、点a知道,距离x(注意,距离不能改为曲线长,否则不能称距离)也知道,那以点a为圆心,x为半径作圆,曲线与圆弧的交点不就是吗?你可没有说是在程序中用,所以,理解成作图不算错的!^_^

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-2-11 19:16:44 | 显示全部楼层

Re: Re: [求助]:不规则曲线上找点!

最初由 柔柔 发布
[B]
那就是说,线知道、点a知道,距离x(注意,距离不能改为曲线长,否则... [/B]

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

使用道具 举报

发表于 2004-2-12 01:23:05 | 显示全部楼层
用安距离等分命令MEASURE
输入地想要的距离即可。但先要搞清楚被份线段的方向。

最初由 eachy 发布
[B]利用Length命令辅助也可以找出来,先对多义线复制,然后都副本Break,去掉不需要的一侧,另一侧执行Length命令[/B]




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

使用道具 举报

发表于 2004-2-12 01:38:42 | 显示全部楼层
如果“距离”是指曲线长度,那么就复制一条有a点的相同曲线,将线截至a点为端点,Me,输入“距离”值,其相邻a点的第一个ME点就是你要的点,再以复制线的a点(端点)为基点,以原曲线a点为目标点,将ME点C到原曲线上就是!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-12 07:10:06 | 显示全部楼层

Re: [求助]:不规则曲线上找点!

最初由 jjxiao 发布
[B]已知:有一条不规则曲线(多义线)及其上面的某一点a
求:在该曲线上距已知点a距离为x的点
请赐教,拜谢 [/B]


REFER TO:
  (defun ptondis (pt dis)
    ;(vl-load-com)
     (setq a (car (entsel "\nSelect the Curve: ")))
     (setq b (vlax-ename->vla-object a))
     (setq d (vlax-curve-getDistAtPoint b pt))
     (setq p (vlax-curve-getPointatdist b (+ d dis)))
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-9 17:04 , Processed in 0.356227 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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