找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1339|回复: 16

[求助]:怎样在曲线的给定长度位置做标记

[复制链接]
发表于 2003-9-29 11:54:18 | 显示全部楼层 |阅读模式

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

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

×
cad有一个divide命令,可以在曲线(直线,多义线,圆弧凳)的等分点处绘制一个标记点或插入一个块儿。那么在vba程序中怎样实现这一功能呢?   还有,如果我想在曲线上一个给定长度的位置作一个标记,应该怎么样实现,也就是怎样来获取曲线上给定长度位置处的点的坐标。

这是一个在道路和水利上很有用的功能,可以在指定的轴线上自动生成具有一定间隔的桩点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-9-29 12:23:56 | 显示全部楼层
道路上这样是不行的,必须用连续桩点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-9-30 20:20:25 | 显示全部楼层
求曲线上一定参数的点,参数是VL的叫法,它将一条曲线分为0-1的参数,0为起点,1为终点,也就是将曲线等分为多少份的意思。

具体例子如下:

  1.   [FONT=courier new]
  2. Private Function GetPointAtParam(ByVal EntObj As AcadEntity, ByVal Param As Double) As Variant
  3.     Dim VL As Object
  4.     Dim VLF As Object
  5.    
  6.     Dim sym As Object
  7.     Dim ret As Variant
  8.     Dim list As Object
  9.     Dim n As Integer
  10.     Dim i As Integer
  11.     Dim Count As Integer
  12.     Dim elements() As Variant
  13.    
  14.     ThisDrawing.SendCommand "(vl-load-com)" & vbCr '首先要加载VL接口,因为后面的函数是基于它的。
  15.    
  16.     Set VL = Application.GetInterfaceObject("VL.Application.16") '这是用于R2004版的,R2000或者R2002的应该使用VL.Application.1。
  17.     Set VLF = VL.ActiveDocument.Functions
  18.     Set sym = VLF.Item("read").funcall("handle") '传入句柄
  19.     ret = VLF.Item("set").funcall(sym, EntObj.Handle)
  20.     Set sym = VLF.Item("read").funcall("(setq curve (handent handle))") '根据句柄得到实体名称(Lisp中的实体名称,这和EntityName是不一样的。)
  21.     Set ret = VLF.Item("eval").funcall(sym)
  22.     Set sym = VLF.Item("read").funcall("param") '传入参数
  23.     ret = VLF.Item("set").funcall(sym, Param)
  24.     Set sym = VLF.Item("read").funcall("(setq lst (vlax-curve-getPointAtParam curve (* param (vlax-curve-getEndParam curve))))") '计算点。
  25.     Set list = VLF.Item("eval").funcall(sym)
  26.     Count = VLF.Item("length").funcall(list) '返回点的数组长度
  27.     ReDim elements(0 To Count - 1) As Variant
  28.     For i = 0 To Count - 1
  29.         elements(i) = VLF.Item("nth").funcall(i, list) '取点的坐标
  30.     Next
  31.     GetPointAtParam = elements
  32. End Function

  33. Sub test()
  34.     Dim Pt As Variant
  35.     Pt = GetPointAtParam(ThisDrawing.ModelSpace(1), 0.5)

  36.     Debug.Print "曲线中点坐标: " & Pt(0) & "," & Pt(1)
  37. End Sub
  38.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-9-30 20:40:49 | 显示全部楼层
多谢各位,在R14下面怎样运行“vl-load-com”,我的程序需要在r14下面运行哦
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

已领礼包: 70个

财富等级: 招财进宝

发表于 2003-10-1 00:29:03 | 显示全部楼层
在执行语句“Set list = VLF.Item("eval").funcall(sym)”时,出一个“要求对象”的错误。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-10-1 10:45:35 | 显示全部楼层
已经修改,原来的多了一句Set sym = VLF.Item("read").funcall("lst")。后来发现在圆弧下取参数为0时会产生错误,而其它曲线则不会。
还有函数中的起点参数应该为0,而终点参数并不是为1,因而将传入的参数作为一个系数来看待,它的取值应该是0-1之间。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 70个

财富等级: 招财进宝

发表于 2003-10-1 21:22:16 | 显示全部楼层
最初由 efan2000 发布
[B]还有函数中的起点参数应该为0,而终点参数并不是为1,因而将传入的参数作为一个... [/B]

还是有些不明白:终点参数并不为1,应该是多少?如果我想取得曲线上距离端点20个单位长度的点的坐标,参数应该设为多少?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-2 07:57:25 | 显示全部楼层
最初由 gyl 发布
还是有些不明白:终点参数并不为1,应该是多少?如果我想取得曲线上距离端... [/B]

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

使用道具 举报

已领礼包: 70个

财富等级: 招财进宝

发表于 2003-10-2 09:58:11 | 显示全部楼层
最初由 lsjjm 发布
[B]
(setq pt (vlax-curve-getPointatdist curveobj 20.0)) [/B]


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

使用道具 举报

发表于 2003-10-2 14:44:33 | 显示全部楼层
对不起, 我才把收件箱清理了. 有什么问题? 请问.  咱们一起讨论研究! 不会再请教别人!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 70个

财富等级: 招财进宝

发表于 2003-10-3 17:26:36 | 显示全部楼层
你的收件箱并没有清理,还是发不进去。
我想请帮忙看一下这个帖子:
http://www.xdcad.net/forum/showthread.php?s=&threadid=91116
我的MSN: gongyouliang@hotmail.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 13:24 , Processed in 0.477908 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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