找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2178|回复: 13

[求助] [求助]:取线段三等分点

[复制链接]
发表于 2007-3-20 15:34:38 | 显示全部楼层 |阅读模式

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

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

×
(defun mid_pt (a b)
(mapcar
'(lambda (a b) (/ (+ a b) 2))
a
b
)
)
.
.
.
(setq pt_mid (mid_pt point1 point11))
这是一个取线段中点的LSP语句.想请教一下,有取线段三等分点的LSP语句吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-3-20 18:33:16 | 显示全部楼层
(/ (+ a b) 2)  = 中点
(/ (+ a b) 3) = ?
(* 2 (/ (+ a b) 3))  =?
你不是吧? ....小学问题..
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-20 20:54:35 | 显示全部楼层
老大,看清楚问题再发话,我是要求出三等分点,并且把它们分别付值给P1 P2 P3
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7231个

财富等级: 富甲天下

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

使用道具 举报

发表于 2007-3-21 01:52:32 | 显示全部楼层
(steq d (distance a b)
         an(angle a b)
         p1 (polar a an (*d 0.25))
         p2 (polar a an (* d 0.5))
         p3 (polar a an (* d 0.75))
)
是这个意思么
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2007-3-21 08:34:33 | 显示全部楼层
(defun C:SZX(/ pt1 pt2 an)
(setq pt1 (getpoint "\n左上角点:"))
(setq pt2 (getpoint pt1 "\n左下角点:"))
(steq d (distance pt1 pt2)
an (angle pt1 pt2)
p1 (polar pt1 an (* d 0.25))
p2 (polar pt1 an (* d 0.5))
p3 (polar pt1 an (* d 0.75))
)
(command "line" pt1 pt2 "")
(command "donut"  "0" "80" p1 P2 P3"")
(princ)
)
我的想法是5楼的意思,但按5楼的写出的程序出错,请帮忙看看
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-3-21 08:54:24 | 显示全部楼层
楼主误将第四行setq写作了steq。
改正后如下:

  1. (defun C:SZX (/ pt1 pt2 an)
  2.   (setq pt1 (getpoint "\n左上角点:"))
  3.   (setq pt2 (getpoint pt1 "\n左下角点:"))
  4.   (setq        d
  5.         (distance pt1 pt2)
  6.         an
  7.         (angle pt1 pt2)
  8.         p1
  9.         (polar pt1 an (* d 0.25))
  10.         p2
  11.         (polar pt1 an (* d 0.5))
  12.         p3
  13.         (polar pt1 an (* d 0.75))
  14.   )
  15.   (command "line" pt1 pt2 "")
  16.   (command "donut" "0" "80" p1 P2 P3 "")
  17.   (princ)
  18. )

<br>
另:在代码结构上还有待改进。
COMMAND函数调用的系统命令最好加上前缀,以确保对原版命令的调用。

  1. (defun C:SZX (/ pt1 pt2 d an)
  2.     (if        (setq pt1 (getpoint "\n第一点:"))
  3.         (if (setq pt2 (getpoint pt1 "第二点:"))
  4.             (progn
  5.                 (setq d
  6.                          (distance pt1 pt2)
  7.                       an
  8.                          (angle pt1 pt2)
  9.                       p1
  10.                          (polar pt1 an (* d 0.25))
  11.                       p2
  12.                          (polar pt1 an (* d 0.5))
  13.                       p3
  14.                          (polar pt1 an (* d 0.75))
  15.                 )
  16.                 (command "_line" pt1 pt2 "")
  17.                 (command "_donut" 0 (/ d 30.) p1 P2 P3 "")
  18.             )
  19.         )
  20.     )
  21.     (princ)
  22. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

发表于 2007-3-21 09:23:43 | 显示全部楼层
三等分点只能取出现两个点,以上的程序分明是四等分点,也可扩展为取n等分点,包括取曲线的等分点.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-21 10:22:51 | 显示全部楼层
谢谢9楼的朋友,问题解决,我想把问题在引伸一下,上面的程序是两点连线,能否改进一下,能连续画线,然后在线上布点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-3-21 11:14:09 | 显示全部楼层
试一试下面这个:

  1. ;;; zml84 于 2007-03-21  11:11
  2. (defun C:test (/ n pt1 pt2 d an old_osmode pti l)
  3.     (if        (setq n (getint "\n请输入等分数目<3>:"))
  4.         ()
  5.         (setq n 3)
  6.     )
  7.     (if        (setq pt1 (getpoint "\n指定起点:"))
  8.         (while (setq pt2 (getpoint pt1 "\n指定下一点:"))
  9.             (setq d
  10.                      (distance pt1 pt2)
  11.                   an
  12.                      (angle pt1 pt2)
  13.             )
  14.             (setq old_osmode (getvar "osmode"))
  15.             (setvar "osmode" 0)
  16.             (command "_line" pt1 pt2 "")
  17.             (if        (> n 1)
  18.                 (progn
  19.                     (command "_donut" 0 (/ d 30.))
  20.                     (setq pti pt1
  21.                           l   (/ d n)
  22.                     )
  23.                     (repeat (1- n)
  24.                         (setq pti (polar pti an l))
  25.                         (command pti)
  26.                     )
  27.                     (command "")
  28.                 )
  29.             )
  30.             (setvar "osmode" old_osmode)
  31.             (setq pt1 pt2)
  32.         )
  33.     )
  34.     (princ)
  35. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 15:48 , Processed in 0.430898 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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