找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 900|回复: 12

[原创]:A SIMPLE LISP PROGRAM

[复制链接]
发表于 2005-6-8 09:10:43 | 显示全部楼层 |阅读模式

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

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

×
(DEFUN C:QXCL()
  (VL-LOAD-COM)
  (COMMAND "UNDO" "BE")
  (COMMAND "UCS" "W")
  (SETQ PRE-ECHO(GETVAR "CMDECHO"))
  (SETQ PRE-OSMODE(GETVAR "OSMODE"))
  (SETQ PRE-OTHROMODE(GETVAR "ORTHOMODE"))
  (SETVAR "OSMODE" 0)
  (SETVAR "ORTHOMODE" 0)
  (SETVAR "CMDECHO" 0)
  (SETQ CURVE(CAR (ENTSEL "PLEASE SELECT A CURVE:")))
  (SETQ FACTOR(GETREAL "THE TRANSLATION FACTOR<1>:"))
  (IF (= FACTOR NIL)
    (SETQ PRECISION 0.5)
    (SETQ PRECISION (/ 0.5 FACTOR))
    )
  (COMMAND "AREA" "E" CURVE)
  (SETQ CURVE-LENGTH(GETVAR "PERIMETER"))
  (SETQ REMAIN(REM CURVE-LENGTH PRECISION))
  (SETQ I(/ (- CURVE-LENGTH REMAIN) PRECISION))
  (SETQ J 0)
  (SETQ ARC(SSADD))
  (SETQ VLA-CURVE(VLAX-ENAME->VLA-OBJECT CURVE))
  (SETQ ST-POINT(VLAX-CURVE-GETSTARTPOINT VLA-CURVE))
  (WHILE (< J I)
    (SETQ MID-POINT(VLAX-CURVE-GETPOINTATDIST VLA-CURVE (+ (/ PRECISION 2) (* PRECISION J))))
    (SETQ END-POINT(VLAX-CURVE-GETPOINTATDIST VLA-CURVE (+ PRECISION (* PRECISION J))))
    (SLOPE)
    (COND
      ((= FLAG 1)
       (COMMAND "LINE" ST-POINT END-POINT "")
      )
      ((= FLAG 2)
       (COMMAND "ARC" ST-POINT MID-POINT  END-POINT)
       )
      ((= FLAG 0)
       (PROGN
         (SETQ MID-POINT(VLAX-CURVE-GETPOINTATDIST VLA-CURVE (+ (/ PRECISION 8) (* PRECISION J))))
         (SETQ END-POINT(VLAX-CURVE-GETPOINTATDIST VLA-CURVE (+ (/ PRECISION 4) (* PRECISION J))))
         (COMMAND "ARC" ST-POINT MID-POINT  END-POINT)
         )
       )
      )
    (SETQ ARC(SSADD (ENTLAST) ARC))
    (SETQ ST-POINT END-POINT)
    (SETQ J(1+ J))
    )
  (IF (> REMAIN 0)
    (PROGN
      (SETQ MID-POINT(VLAX-CURVE-GETPOINTATDIST VLA-CURVE (+ (/ REMAIN 2.0) (* PRECISION J))))
      (SETQ END-POINT(VLAX-CURVE-GETENDPOINT VLA-CURVE))
      (SLOPE)
      (COND
        ((= FLAG 1)
         (COMMAND "LINE" ST-POINT END-POINT "")
         )
        ((= FLAG 0)
         (COMMAND "ARC" ST-POINT MID-POINT  END-POINT)
         )
        ((= FLAG 2)
         (COMMAND "ARC" ST-POINT MID-POINT  END-POINT)
         )
        )
      (SETQ LAST-OBJ(ENTLAST))
      (SETQ ARC(SSADD LAST-OBJ ARC))
      (PRINC)
      )
    )
  (COMMAND "PEDIT" LAST-OBJ "Y" "J" ARC "" "")
  (SETVAR "OSMODE" PRE-OSMODE)
  (SETVAR "ORTHOMODE" PRE-OTHROMODE)
  (SETVAR "CMDECHO" PRE-ECHO)
  )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN SLOPE()
  (SETQ XST(CAR ST-POINT))
  (SETQ YST(CADR ST-POINT))
  (SETQ XMID(CAR MID-POINT))
  (SETQ YMID(CADR MID-POINT))
  (SETQ XEND(CAR END-POINT))
  (SETQ YEND(CADR END-POINT))
  (SETQ SLOPE-MID-END(/ (- YEND YMID) (- XEND XMID)))
  (SETQ SLOPE-ST-MID(/ (- YMID YST) (- XMID XST)))
  (SETQ SUBSLOPE(ABS (- SLOPE-MID-END SLOPE-ST-MID)))
  (COND
     ((AND (= XMID XST) (/= XEND XMID) (> SLOPE-MID-END 1000000))
      (SETQ FLAG 1)
      )
     ((AND (/= XMID XST) (= XEND XMID) (> SLOPE-ST-MID 1000000))
      (SETQ FLAG 1)
      )
     ((AND (= XMID XST) (/= XEND XMID) (<= SLOPE-MID-END 1000000))
      (SETQ FLAG 2)
      )
     ((AND (/= XMID XST) (= XEND XMID) (<= SLOPE-ST-MID 1000000))
      (SETQ FLAG 2)
      )
     ((AND (/= XMID XST) (/= XEND XMID))
       (PROGN
         (COND
           ((< SUBSLOPE 1E-4)
            (SETQ FLAG 1)
            )
           ((> SUBSLOPE 0.25)
            (SETQ FLAG 0)
            )
           (SETQ FLAG 2)
           )
         )
      )
     ((AND (/= XMID XST) (/= XEND XMID))
       (SETQ FLAG 1)
       )
     )
  )
;;;THIS IS SIMPLE PROGRAM WITH NO EXPLANATION.YOU CAN ANALYZE IT AND THEN GIVE SOME ADVICE.THANKS FOR YOU KINDNESS.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-6-8 09:20:54 | 显示全部楼层
最好说明程序的用途
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-8 10:06:00 | 显示全部楼层
I THINK YOUR VLISP IS VERY GOOD!
BUT I MUST STILL GIVE YOU TWO ADVICES.
THE FIRST IS IF YOU CAN SPEAK CHINESE,PLEASE SPEAK IN IT,
BECAUSE IN THIS FORUM MOSTLY ARE CHINESE.
SECOND IS WHEN YOU HAVE  PUBLISHED A  PROGRAM YOU SHOULD EXPLAN
HOW TO USE IT.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-8 12:05:56 | 显示全部楼层
我能明白你的VLISP是非常好的
但是我有2个问题
第一,如果你能说中文,请用中文交流,
         因为在这里交流的大多数是中国人
第二,需要将你的程序加上注释,让使用者明白你的意图

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

使用道具 举报

发表于 2005-6-8 13:14:06 | 显示全部楼层
呵呵。。。李兄你什么時候變成我的私人翻譯拉。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-6-8 14:47:31 | 显示全部楼层
舟自横,你明知道这儿中国人多,还在三楼用洋文,这不是硬逼大家去学那洋玩意。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-6-8 18:01:19 | 显示全部楼层
没想到舟自横除程序之外,对E文也蛮有研究的嘛,佩服!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-8 18:23:36 | 显示全部楼层
曲线转换工具,速度太慢。
不如“★线转多段线”(2pl)好使。呵呵……
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2005-6-9 12:19:19 | 显示全部楼层

謝謝大家

因為電腦為繁體系統,發到網站上可能為亂碼,故用了英文,請大家不要見怪。
所發的LISP程序是用來將曲線轉為直線和圓弧邊成的復線,以保証能夠做線割加工。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 06:53 , Processed in 0.493226 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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