找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4286|回复: 9

[求助] 求助:我想用LISP在样条曲线上每间隔一定距离画条直线

[复制链接]
发表于 2007-1-4 21:30:53 | 显示全部楼层 |阅读模式

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

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

×
我想用LISP在样条曲线上每间隔一定距离画条直线,,求助好的思路

                               
登录/注册后可看大图
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-1-6 12:33:09 | 显示全部楼层
我以前有这个现成的工具,可惜不知道丢哪了,给你刚好。
可以按指定间距标注一条线。
你先学学VLAX关于曲线部分的函数,很容易实现 的。
改天有时间给你编一个。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-6 13:38:28 | 显示全部楼层
很容易实现的,用vlax-Curve-GetFirstDeriv和vlax-Curve-GetParamatDist
可以做到,我做了一个类似的功能
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-6 18:07:01 | 显示全部楼层
费了一天劲也没找到关于vlax-Curve-GetFirstDeriv的说明,书上居然也没有
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

发表于 2007-1-6 19:16:32 | 显示全部楼层
其实这个不用编程就可以实现的,那就是曲线路径阵列的方法。
用ME命令.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-6 19:52:05 | 显示全部楼层
不用编程,
使用“DEVIDED”命令即可实现该功能。
输入命令后,按照提示输入间距即可。然后过等分点画需要的线段即可。
等分点采用“节点”捕捉“node”即可。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-6 21:18:43 | 显示全部楼层
  1. [FONT=courier new](defun c:test ()
  2.   (CMDLA0)
  3.   (setq        int (UINT 7 "" "等分数" INT)
  4.         no2 (UREAL 1 "" "线长" no2)
  5.         ss  (ssget '((0 . "ARC,*LINE,CIRCLE,ELLIPSE")))
  6.         i   -1
  7.   )
  8.   (while (setq s1 (ssname ss (setq i (1+ i))))
  9.     (xyp-CurveDivLine s1 int no2 2);1、2、3实现不同的效果
  10.   )
  11.   (CMDLA1)
  12. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-6 21:30:59 | 显示全部楼层
(setq vlaENT (vlax-ename->vla-object ENT) tan (vlax-Curve-GetFirstDeriv vlaENT (vlax-Curve-GetParamatDist vlaselmeENT len) pangle (atan (/ (cadr tan) (car tan))))
;pangle:曲线(len距离处)垂直角度,用这个角度画线就可以了 ent:曲线 ,len:距离
知道这些很容易实现那个功能了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

发表于 2007-1-6 21:45:15 | 显示全部楼层
limingqian   说得不正确不能满足楼主的要求,用CAD命令做法如下:

1、先画一条水平或者垂直的直线段
2、把这个直线段做成块,插入点为直线的端点,命名为”line“之类的
3、在命令行中输入:Me

命令: me MEASURE
选择要定距等分的对象:
指定线段长度或 [块(B)]: b
输入要插入的块名: line

是否对齐块和对象?[是(Y)/否(N)] <Y>:

指定线段长度: 指定第二点:  ----在这里指定你想要的等分距离。

然后你就可以看到效果了。

用这种做方法简单,步骤少,而且可以按照你需要的定直线的长度和等分的距离,甚至可以修改图块选择合适的图块。比lisp都还方便。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-7 11:23:58 | 显示全部楼层
highflybird  的非常简便,又学了一招,但后期处理灵活性差,因为处理完线段不是等长的。但满足了所提问题的要求。
lqdcwnui  的方法还得学习,除vlax-Curve-GetParamatDist外,其他的功能还不懂。能介绍本学习的好书吗?
xyp1964 写的太深了,看不懂。关键是思路。

我原来思路是这样的
画一条线(包括直线,多义线,弧线,曲线),第一步:偏移这条线,并赋植偏移后的线为“xxx”,用“vlax-curve-getPointAtDist”(phoenixdjq教的)取得点做“xxx”的垂线,然后处理线长。依此循环。结束时删除“xxx”。
垂线能否实现?应该怎么做?

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 22:27 , Processed in 0.188482 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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