找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 609|回复: 7

[求助] [求助]:请大家帮我挑错

[复制链接]
发表于 2002-11-30 20:11:04 | 显示全部楼层 |阅读模式

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

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

×
小弟有一作业,情况是这样的:
在任意直线上得一点,再得不在这一直线上的点作为方向,然后画表面粗糙度.
小弟参考了上次网友 chg 在 "用(ssget )可以做到" 一文中的办法
想半天,做不出,ssget实体选择实在有点过不去
请各位帮忙挑错,感谢感谢...
  1. [font=courier new]
  2. (defun c:t2(/ p1 p2 p3 p4 p5 p6 p7 p8 ang ang1 k ename ss)
  3.   (setq p1 (getpoint "\n input p1"))
  4.   (setq p5 (getpoint "\n input p2"))
  5.   (setq k (getdist "\n input k"))
  6.   (setq ss (ssget p1))
  7.   (setq ename (ssname ss 0))
  8.   (setq p2 (cdr (assoc 10 (entget ename))))
  9.   (setq p3 (cdr (assoc 11 (entget ename))))
  10.   (setq ang (angle p2 p3))
  11.   (setq ang1 (angle p1 p5))
  12.   (cond
  13.     ((> (- ang1 pi) ang)
  14.      (setq p6 (polar p1 (- ang (/ pi 3)) (* 10 k)))
  15.      (setq p7 (polar p1 (- ang (* (/ pi 3) 2) (* 10 k))))
  16.      (setq p8 (polar p1 (- ang (* (/ pi 3) 2) (* 20 K)))))
  17.     ((and (> ang1 ang) (< ang1 (+ ang pi)))
  18.      (setq p6 (polar p1 (+ ang (* (/ pi 3) 2) (* 10 k))))
  19.      (setq p7 (polar p1 (+ ang (/ pi 3) (* 10 k))))
  20.      (setq p8 (polar p1 (+ ang (/ pi 3) (* 20 K)))))
  21.     ((and (> ang1 0) (< ang1 ang))
  22.      (setq p6 (polar p1 (- ang (/ pi 3)) (* 10 k)))
  23.      (setq p7 (polar p1 (- ang (* (/ pi 3) 2) (* 10 k))))
  24.      (setq p8 (polar p1 (- ang (* (/ pi 3) 2) (* 20 K))))))
  25.   (command "pline" p7 p6 p1 p8 "")
  26.   )
  27.    
  28. 注:  k是画粗糙度的比例系数
  29. [/font]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-30 20:13:21 | 显示全部楼层

Re: [求助]:请大家帮我挑错

最初由 jimmy8135 发布
[B]小弟有一作业,情况是这样的:
在任意直线上得一点,再得不在这一直线上的点作为方向,然后画表面粗糙度.
小弟参考了上次网友 chg 在 "用(ssget )可以做到" 一文中的办法
想半天,做不出,ssget实体选择实在有点过不... [/B]


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

使用道具 举报

 楼主| 发表于 2002-11-30 20:21:04 | 显示全部楼层
情况是这样的,这个函数的要求是
先用户点在任意直线上一点,作粗糙度起始点.然后点直线外一点,作参考方向.通过这个点画出垂直于该直线的粗糙度.
这个函数很奇怪,我求p6 ,p1都得到了,就是p7,p8画不出来
纳闷了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2002-11-30 20:33:29 | 显示全部楼层
最初由 jimmy8135 发布
情况是这样的,这个函数的要求是
先用户点在任意直线上一点,作粗糙度起始点.然后点直线外一点,作参考方向.通过这个点画出垂直于该直线的粗糙度.
这个函数很奇怪,我求p6 ,p1都得到了,就是p7,p8画不出来
纳闷了.


1.ssget在此不适合,建议用entsel,可以选择一个实体((car(entsel))),同时得到一点((cadr(...)。
2.第二组P6、P7、P8的右括号位置错误,使得Polar只接受两个变元。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-12-2 12:08:04 | 显示全部楼层
(defun c:t2(/ p1 p2 p3 p5 p6 p7 p8 ang ang1 k ename ss)
  (setq p1 (getpoint "\n input p1"))
  (setq p5 (getpoint "\n input p2"))
  (setq k (getdist "\n input k"))
  (setq ss (ssget p1))
  (setq ename (ssname ss 0))
  (setq p2 (cdr (assoc 10 (entget ename))))
  (setq p3 (cdr (assoc 11 (entget ename))))
  (setq ang (angle p2 p3))
  (setq ang1 (angle p1 p5))
  (cond
    ((> (- ang1 pi) ang)
     (setq p6 (polar p1 (- ang (/ pi 3)) (* 10 k)))
     (setq p7 (polar p1 (- ang (* (/ pi 3) 2) (* 10 k))))
     (setq p8 (polar p1 (- ang (* (/ pi 3) 2) (* 20 K)))))
    ((and (> ang1 ang) (< ang1 (+ ang pi)))
     (setq p6 (polar p1 (+ ang (* (/ pi 3) 2)) (* 10 k)))
     (setq p7 (polar p1 (+ ang (/ pi 3) (* 10 k))))
     (setq p8 (polar p1 (+ ang (/ pi 3) (* 20 K)))))
    ((and (> ang1 0) (< ang1 ang))
     (setq p6 (polar p1 (- ang (/ pi 3)) (* 10 k)))
     (setq p7 (polar p1 (- ang (* (/ pi 3) 2) (* 10 k))))
     (setq p8 (polar p1 (- ang (* (/ pi 3) 2) (* 20 K))))))
  (command "pline" p7 p6 p1 p8 "")
  )

它说参数太少.为啥呀?郁闷...
那位大哥行行好,帮我看一下吧.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-2 13:51:32 | 显示全部楼层

re:

修改后的代码如下:

  1.   [FONT=courier new]
  2. (defun c:t2 (/ p1 p2 p3 p5 p6 p7 p8 ang ang1 k ename ss)
  3.   (setq p1 (getpoint "\n input p1"))
  4.   (setq p5 (getpoint "\n input p2"))
  5.   (setq k (getdist "\n input k"))
  6.   (setq ss (ssget p1))
  7.   (setq ename (ssname ss 0))
  8.   (setq p2 (cdr (assoc 10 (entget ename))))
  9.   (setq p3 (cdr (assoc 11 (entget ename))))
  10.   (setq ang (angle p2 p3))
  11.   (setq ang1 (angle p1 p5))
  12.   (cond
  13.     ((> (- ang1 pi) ang)
  14.      (setq p6 (polar p1 (- ang (/ pi 3)) (* 10 k)))
  15.      (setq p7 (polar p1 (- ang (* (/ pi 3) 2)) (* 10 k)))
  16.      (setq p8 (polar p1 (- ang (* (/ pi 3) 2)) (* 20 K)))
  17.     )
  18.     ((and (> ang1 ang) (< ang1 (+ ang pi)))
  19.      (setq p6 (polar p1 (+ ang (* (/ pi 3) 2)) (* 10 k)))
  20.      (setq p7 (polar p1 (+ ang (/ pi 3)) (* 10 k)))
  21.      (setq p8 (polar p1 (+ ang (/ pi 3)) (* 20 K)))
  22.     )
  23.     ((and (> ang1 0) (< ang1 ang))
  24.      (setq p6 (polar p1 (- ang (/ pi 3)) (* 10 k)))
  25.      (setq p7 (polar p1 (- ang (* (/ pi 3) 2)) (* 10 k)))
  26.      (setq p8 (polar p1 (- ang (* (/ pi 3) 2)) (* 20 K)))
  27.     )
  28.   )
  29.   (command "pline" p7 p6 p1 p8 "")
  30. )
  31.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2002-12-2 13:55:34 | 显示全部楼层

  1.   (cond
  2.     ((> (- ang1 pi) ang)
  3.      (setq p6 (polar p1 (- ang (/ pi 3)) (* 10 k))
  4.            p7 (polar p1 (- ang (* (/ pi 3) 2)) (* 10 k))
  5.            p8 (polar p1 (- ang (* (/ pi 3) 2)) (* 20 K))
  6.      )
  7.     )
  8.     ((and (> ang1 ang) (< ang1 (+ ang pi)))
  9.      (setq p6 (polar p1 (+ ang (* (/ pi 3) 2)) (* 10 k))
  10.            p7 (polar p1 (+ ang (/ pi 3)) (* 10 k))
  11.            p8 (polar p1 (+ ang (/ pi 3)) (* 20 K))
  12.      )
  13.     )
  14.     ((and (> ang1 0) (< ang1 ang))
  15.      (setq p6 (polar p1 (- ang (/ pi 3)) (* 10 k))
  16.            p7 (polar p1 (- ang (* (/ pi 3) 2)) (* 10 k))
  17.            p8 (polar p1 (- ang (* (/ pi 3) 2)) (* 20 K))
  18.      )
  19.     )
  20.   )


程序最好在Vlisp或Lisplink等专用编辑器中编辑,然后Format,容易检查错误。
初学者应尽量按标准的缩进格式书写(lisp退两格,DCL退4格),养成良好习惯,便于检查。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-28 09:33 , Processed in 0.238702 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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