找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 554|回复: 4

[LISP程序]:那个高手过来帮我读书一下这些代码

[复制链接]
发表于 2005-3-18 19:46:51 | 显示全部楼层 |阅读模式

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

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

×
帮我一下那些我注的是什么意思,
(defun c:lsp_34()
  (setvar "cmdecho" 0)
  (setq os (getvar "osmode"))
  (setq oldclayer (getvar "clayer"))
  (setvar "osmode" 0)
  (setq cenpt (getpoint "圆心:"))
  (setq dia   (getdist "\n直径<96>:"))(if (null dia)(setq dia 96.0))
  (setq n     (getint "\n手指头数目<4>:"))(if (null n)(setq n 4))
  (command "-layer" "m" "str" "c" 4 "" "")
  (command "circle" cenpt "d" dia)
  (setq ent (entlast))
  ;;;****************************************************
  (setq r (* dia 0.5) x1 (/ r n) x2 (* x1 0.5))
  (setq k (- r x2) p0 cenpt)                               
  (setq i 1)
  (repeat (1- n)
     (setq ang(acos (/ x2 k)))  ;请问这句是什么为,他这里所求的角是指那个角》 还有acos返回是什么?                               
     (setq arcen(polar cenpt ang k))                       
     (setq p0 (polar cenpt 0 (* i x1)))                       
     (setq p1 (polar arcen 0 (/ x1 2)))                        
     (setq p2 (polar arcen pi (/ x1 2)))               
     (command "arc" p1 "c" arcen p2)                       
     (if (= i 1)(command "line" cenpt p2 ""))
     (command "line" p0 p1 "")                               
     (command "arc" p0 "c" cenpt "a" -90)               
     (setq i (1+ i) x2 (+ x2 x1))
  )
  (command "arc" p0 "e" (polar p0 0 x1) "a" -180)       
  (command "array" (get_ss ent) "" "p" cenpt 2 "" "")   
  (command "-layer" "m" "dim" "c" 1 "" "")
  (command "dim1" "ver" "" (list ent cenpt) "t" (strcat "%%c" "<>") (polar cenpt 0 (+ r 10)))
  (command "-group" "c" "*" "" ent (get_ss ent) "")     
  (setvar "osmode" os)
  (setvar "clayer" oldclayer)
  (prin1)
)

(defun acos(val)                                       
  (atan (/ (sqrt (- 1.0 (* val val))) val))
)
(defun get_ss(ref_en)                                       
  (setq ss (ssadd))
  (while (setq en (entnext ref_en))
      (setq ss (ssadd en ss) ref_en en)
  )
  ss
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-3-18 20:34:18 | 显示全部楼层
acos:反余弦函数,返回值当然是角度(弧度单位)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-5-30 15:08:02 | 显示全部楼层 |阅读模式

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

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

×
我也看不懂
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-5-30 20:29:51 | 显示全部楼层
“金手指”程序(源程序自《AutoLISP&DCL 基础篇》,P164~P165)
[php](load "xyp_lib");加载通用函数
;|
如果已经下载xyp_lib并放到搜索路径下可以不再下载!
利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
1.在acad.lsp中增加(load"xyp_lib")
2.在每个程序内增加(load"xyp_lib")
3.在command下,输入(load"xyp_lib")
4.在菜单.mnl中增加(load"xyp_lib")
通用函数下载地址:
http://www.xdcad.net/forum/attachment.php?s=&postid=1606661
http://www.mjtd.com/bbs/dispbbs. ... ID=37554&page=1
|;

(defun c:lsp_34        ()
  (CMDLA0)  
  (setq cenpt (getpoint "\n圆心 : "))
  (szx cenpt 1000 1)
  (MKLA "STR" 4)
  (setq        dia (UREAL 1 "" "\n直径" dia)
        n   (UINT 1 "" "\n手指头数目" n)
        r   (* dia 0.5)
        x1  (/ r n)
        x2  (* x1 0.5)
        k   (- r x2)
        p0  cenpt
        i   1
  )
  (setvar "osmode" 0)
  (command "circle" cenpt "d" dia)
  (setq ent (entlast))
  (repeat (1- n)
    (setq ang        (acos (/ x2 k))                ;中心与切弧弧心的夹角
          arcen        (polar cenpt ang k)
          p0        (polar cenpt 0 (* i x1))
          p1        (polar arcen 0 (/ x1 2))
          p2        (polar arcen pi (/ x1 2))
    )
    (command "arc" p1 "c" arcen p2)
    (if        (= i 1)
      (command "line" cenpt p2 "")
    )
    (command "line" p0 p1 "")
    (command "arc" p0 "c" cenpt "a" -90)
    (setq i  (1+ i)
          x2 (+ x2 x1)
    )
  )
  (command "arc" p0 "e" (polar p0 0 x1) "a" -180)
  (command "array" (get_ss ent) "" "p" cenpt 2 "" "")
  (MKLA "DIM" 1)
  (command "dim1"
           "ver"
           ""
           (list ent cenpt)
           "t"
           (strcat "%%c" "<>")
           (polar cenpt 0 (+ r (* dia 0.1)))
  )
  (command "-group" "c" "*" "" ent (get_ss ent) "")
  (CMDLA1)
)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 06:49 , Processed in 0.178357 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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