明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1798|回复: 8

[求助] 能帮忙详细分析下次源程序吗?

[复制链接]
发表于 2011-12-19 16:50:24 | 显示全部楼层 |阅读模式
本帖最后由 PhantomFox 于 2011-12-19 17:24 编辑

我正在学习lisp语言,有个程序,对里面的几个步骤不是很明白,请高手指点!
能把每行的具体内容和作用写明最好!
  1. ;;;重圆消除 (相同圆心、相同半径);;;
  2. ========================================
  3. (defun C:TT (/ SS LST I EN ENL PT10 PT11 A N LST_NEW)
  4.   (if (setq SS (ssget '((0 . "CIRCLE"))))
  5.     (progn ;;组织成表((en  pt10  pt11)...)         
  6.     (setq LST '()
  7.    I   0
  8.     )
  9.     (repeat (sslength SS)
  10.       (setq EN (ssname SS I)
  11.      ENL (entget EN)
  12.      PT10 (cdr (assoc 10 ENL))
  13.      r (cdr (assoc 40 ENL))
  14.       )
  15.       (setq LST (cons (list EN PT10 r) LST))
  16.       (setq I (1+ I))
  17.     )
  18.     ;;逐个对比     
  19.     (while LST
  20.       ;;取首个         
  21.       (setq A
  22.          (car LST)
  23.      LST (cdr LST)
  24.       )
  25.       ;;对比           
  26.       (setq LST_NEW '())
  27.       (foreach N LST
  28.         (if
  29.    (and (equal (cadr A) (cadr N) 0.001)
  30.         (equal (caddr A) (caddr N) 0.001)
  31.    )
  32.     (entdel (car N)) ;_删除实体   
  33.     (setq LST_NEW (cons N LST_NEW))
  34.         )
  35.       )
  36.       ;;    (setq LST LST_NEW)     ) ) )
  37.       (princ)
  38.     )
  39.     )
  40.   )
  41. )

发表于 2011-12-19 20:37:41 | 显示全部楼层
建议你找一个《LISP函数参考2008中文版.chm》对照着看一下各个函数,这样才能学的更透彻
发表于 2011-12-20 08:51:01 | 显示全部楼层
程序设计方面的,最好是到“开发板块”去。另外,有什么疑问,最好能明确些;不明白的,是哪里不明白。
 楼主| 发表于 2011-12-20 09:55:14 | 显示全部楼层
本帖最后由 PhantomFox 于 2011-12-20 09:59 编辑
skynoon 发表于 2011-12-19 20:37
建议你找一个《LISP函数参考2008中文版.chm》对照着看一下各个函数,这样才能学的更透彻


已经对着函数看过了,里面有几个地方不明白。

比如说这几句
              (if (setq SS (ssget '((0 . "CIRCLE"))))   

  •     (setq LST '()
  •    I   0
  •     )
  •      PT10 (cdr (assoc 10 ENL))
  •      r (cdr (assoc 40 ENL))
  •       )
  •       (setq LST (cons (list EN PT10 r) LST))
  •       (foreach N LST
  •         (if
  •    (and (equal (cadr A) (cadr N) 0.001)
  •         (equal (caddr A) (caddr N) 0.001)
  •    )
  •     (entdel (car N)) ;_删除实体
  •     (setq LST_NEW (cons N LST_NEW))
  •         )
  •       )
  •       ;;    (setq LST LST_NEW)     ) ) )
还不是很明白!!!能讲解下吗?
发表于 2011-12-20 20:17:44 | 显示全部楼层
我现在学习也是一条条地查。
发表于 2011-12-20 21:36:07 | 显示全部楼层
1,建立空表,对I赋值0  4,ENL的10组码 坐标赋值给PT10(在此是圆心坐标) 5 ENL的40组码,赋值给r(在此是半径)  7  建立表 8之后 对表的每一个元素 循环
 楼主| 发表于 2011-12-21 09:37:36 | 显示全部楼层
skynoon 发表于 2011-12-20 21:36
1,建立空表,对I赋值0  4,ENL的10组码 坐标赋值给PT10(在此是圆心坐标) 5 ENL的40组码,赋值给r(在此是半 ...

基本清楚了,感谢!
发表于 2011-12-30 13:08:10 | 显示全部楼层
你拿到cad里,一条一条的执行,很快就明白了
 楼主| 发表于 2011-12-30 16:13:54 | 显示全部楼层
lixuedong 发表于 2011-12-30 13:08
你拿到cad里,一条一条的执行,很快就明白了

谢谢指导!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-24 23:04 , Processed in 0.177074 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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