找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1238|回复: 7

[LISP程序]:一个波浪线的程序,请大家完善!

[复制链接]

已领礼包: 2个

财富等级: 恭喜发财

发表于 2008-4-4 17:54:35 | 显示全部楼层 |阅读模式

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

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

×
尚缺以下功能:
1、只能从左往右,想增加交换顶点的if程序,增加成功了,不够完美;
2、设定比例,想增加的朋友自己增加;
3、画完的多义线无法连成一条线,自己增加语句,未果;
4、取消了任意角度,只能水平画线。
以上1、3请求达人帮忙!
基本可以使用的哦^_^,需要完善!
[PHP]
Water.LSP (c)2008
(defun newerr (NE)
   (if (/= NE "Function cancelled")
      (princ (strcat "\nError: " NE))
   )
   (setvar "OSMODE" OM)
   (setvar "CMDECHO" CE)
   (setvar "BLIPMODE" BM)
   (command "layer" "m" "water" "c" "1" "water" "")  
   (princ)
)
(defun c:water
   (/ SP EP HT OM CE BM DX AN NX NU AX PX
         P1 P2 P3 P4 P5 XSP XEP XT tmpep tmpsp)
   (while (= SP nil) (setq SP
         (getpoint "\nPick start point of water: ")))
   (while (= EP nil) (setq EP
         (getpoint "\nPick end point of water: ")))
   (setq OM (getvar "OSMODE")) (setvar "OSMODE" 0)
   (setq CE (getvar "CMDECHO")) (setvar "CMDECHO" 0)
   (setq BM (getvar "BLIPMODE")) (setvar "BLIPMODE" 0)
   (setq orth (getvar "orthomode")) (setvar "orthomode" 0)
   (setq XSP (car SP) XEP (car EP))
   (if (> XSP XEP)
       (progn
       (setq tmpsp SP)
       (setq tmpep EP)
       (setq SP tmpep)
       (setq EP tmpsp)
       )
   )
     (setq DX (distance SP EP)
      AN (angle SP EP)
      NU (/ DX 100)
      AX (+ AN (/ pi 2))
      P1 (list (+ 20 (car SP)) (- (cadr SP) 20))
      P2 (list (+ 40 (car SP)) (- (cadr SP) 30))
      P3 (list (+ 60 (car SP)) (- (cadr SP) 30))
      P4 (list (+ 80 (car SP)) (- (cadr SP) 20))
      P5 (polar SP 0 100)
      )
      (repeat (fix NU)
      (command ".PLINE" SP P1 P2 P3 P4 P5 "")
      (command ".pedit" "m" "l" "" "j" 0 "")
      (setq SP P5
      P1 (list (+ 20 (car SP)) (- (cadr SP) 20))
      P2 (list (+ 40 (car SP)) (- (cadr SP) 30))
      P3 (list (+ 60 (car SP)) (- (cadr SP) 30))
      P4 (list (+ 80 (car SP)) (- (cadr SP) 20))
      P5 (polar SP 0 100)
      )
   )
   (setvar "OSMODE" OM)
   (setvar "CMDECHO" CE)
   (setvar "BLIPMODE" BM)
   (setvar "orthomode" orth)
   (princ)
);end
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 10402个

财富等级: 富甲天下

发表于 2008-4-5 10:08:16 | 显示全部楼层
[php]
(defun c:water (/ SP EP HT OM CE BM DX AN NX NU AX PX
         P1 P2 P3 P4 P5 XSP XEP XT tmpep tmpsp)
(IF (AND (setq SP (getpoint "\nPick start point of water: "))
          (setq EP (getpoint SP "\nPick end point of water: "))) (PROGN
  (setq OM (getvar "OSMODE")) (setvar "OSMODE" 0)
  (setq CE (getvar "CMDECHO")) (setvar "CMDECHO" 0)
  (setq BM (getvar "BLIPMODE")) (setvar "BLIPMODE" 0)
  (setq orth (getvar "orthomode")) (setvar "orthomode" 0)
  (setq XSP (car SP) XEP (car EP))
  (if (> XSP XEP) (setq tmpsp SP tmpep EP SP tmpep EP tmpsp))
  (setq NU (/ (distance SP EP) 100)
          AN (angle SP EP)
          P1 (polar SP AN 100))
  (COMMAND ".PLINE" SP "A" "A" "125" P1)
  (repeat (fix NU)
   (setq P1 (polar P1 AN 100))
   (COMMAND "A" "125" P1)
  )
  (COMMAND "")
  (setvar "OSMODE" OM)
  (setvar "CMDECHO" CE)
  (setvar "BLIPMODE" BM)
  (setvar "orthomode" orth)
))
(princ)
);end
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2008-4-6 11:24:55 | 显示全部楼层
zxq0220
请问一下,我要生成五段多义线,可以么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10402个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2008-4-7 01:43:24 | 显示全部楼层
我的意思是说每个单元都是五个线段,每段的水平距离是20,垂直距离是20,10,0,所以编写起来有点难度,可能需要使用两个循环语句,所以有点晕了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10402个

财富等级: 富甲天下

发表于 2008-4-8 20:10:18 | 显示全部楼层
可以用子程序。
[php]
(defun newerr (NE)
(if (/= NE "Function cancelled")
  (princ (strcat "\nError: " NE))
)
(setvar "OSMODE" OM)
(setvar "CMDECHO" CE)
(setvar "BLIPMODE" BM)
(command "layer" "m" "water" "c" "1" "water" "")
(princ)
)
(defun c:water (/ SP EP HT OM CE BM DX AN NX NU AX PX
         P1 P2 P3 P4 P5 XSP XEP XT tmpep tmpsp)
(IF (AND (setq SP (getpoint "\nPick start point of water: "))
          (setq EP (getpoint SP "\nPick end point of water: "))) (PROGN
  (setq OM (getvar "OSMODE")) (setvar "OSMODE" 0)
  (setq CE (getvar "CMDECHO")) (setvar "CMDECHO" 0)
  (setq BM (getvar "BLIPMODE")) (setvar "BLIPMODE" 0)
  (setq orth (getvar "orthomode")) (setvar "orthomode" 0)
  (setq XSP (car SP) XEP (car EP))
  (if (> XSP XEP) (setq tmpsp SP tmpep EP SP tmpep EP tmpsp))
  (setq AN (angle SP EP))
  (wave SP AN 5)
  (wave (polar (polar sp (+ (/ pi 2) AN) 10) AN 20) AN 5)
  (wave (polar (polar sp (+ (/ pi 2) AN) 20) AN 40) AN 5)
  (setvar "OSMODE" OM)
  (setvar "CMDECHO" CE)
  (setvar "BLIPMODE" BM)
  (setvar "orthomode" orth)
))
(princ)
);end
(defun wave (pt1 ang n / p1)
(setq P1 (polar SP ang 100))
(COMMAND ".PLINE" pt1 "A" "A" "125" P1)
(repeat (fix N)
  (setq P1 (polar P1 ang 100))
  (COMMAND "A" "125" P1)
)
(COMMAND "")
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2008-4-9 00:41:43 | 显示全部楼层
学习了,不过我用做选择集的方法已经搞出来了,o(∩_∩)o
谢谢你哟,你的方法还是有问题,有空多指教!

我作的选择集
[PHP]
(setq ST SP)
(setq EN (polar SP (ANGLE SP EP) (DISTANCE SP EP)))
...
(setq ss1 (ssget "C" (list (- (car ST) 1) (- (cadr ST) 101)) (list (+ (car EN) 1) (+ (cadr EN) 101))))
(command ".pedit" "m" ss1 "" "J" 0.1 "" )
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 21:47 , Processed in 0.291113 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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