找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2230|回复: 17

[研讨] 新手可以来看看,大侠来指点一下

[复制链接]

已领礼包: 685个

财富等级: 财运亨通

发表于 2013-5-19 17:00:45 | 显示全部楼层 |阅读模式

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

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

×
;注明:以下源码为炫版主写出来的,感谢原作者
;我也是新手,我只是想分享我的学习的方式,希望新手同学一起进步,和得更多高手指点



[pcode=lisp,true]
;源码如下

;---------圆心到象限点直线-----------
(defun c:ll ( / i p1 p2 r s1 ss)
    (setq ss (ssget  '((0 . "CIRCLE")))
          i -1  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (setq p1 (cdr (assoc 10 (entget s1)))
          r (cdr (assoc 40 (entget s1)))
          p2 (list (+ (car p1) r) (cadr p1))
    )
  (entmake (list  '(0 . "line") (cons 10 p1) (cons 11 p2)))
  )
)

[/pcode]
;测试图如下:
;图中  只  有一个圆,圆心座标为10,20  半径R=6




;源码解读过程如下
;第一行     ( / i p1 p2 r s1 ss)这些看不懂-------------烦请高手指点一下
;第二行     过滤其它对象,只选择圆
;第三行     第三行   I -1 )   炫版主只作简单注释,还是不明白
;第四行     用的参数while太高级,本人菜鸟,实在看不懂  请高手指点一下

;第五行   赋予P1为:在选择集S1中搜索并提取10组码(去掉第一个组码《10》的圆心座标)
;反回P1结果 10,20,0

;第六行      :在选择集S1中搜索并提取40组码(圆半径值)去掉40组码
;一开始还真看不懂为什么要这R值,后来才明白是为了运算直线的座标点
;反回R结果  6

;第七行      赋予P2为:表  取P1中的第一个值,即10+6   取P1中的第二个值,20
;反回P2结果  16,20

;最后一行,用entmake函数以表的方式创建一条直线,表头加组码10(即起点)和11(即终点)
;结果可以这样理解:(COMMAND: "line" "10,20" "16,20" "")


;还是最主要的一点没看懂,可能是因为我看不懂第四行while函数的因原,
;为什么第二行多选了圆后可以各自的P1和P2座标点。万望高手指点





评分

参与人数 2D豆 +11 收起 理由
炫翔 + 5 赞一个,再接再厉!
XDSoft + 6 出题引导交流奖!

查看全部评分

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

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-19 17:18:04 | 显示全部楼层
(while (setq s1 (ssname ss (setq i (1+ i))))

----

这行是把选择集的每个实体拿出来赋给变量S1,当选择集所有实体都完毕后,结束循环。

既然可以拿出来每个园,那循环体里面就是得到的每个园的数据啊。

评分

参与人数 1D豆 +3 收起 理由
炫翔 + 3 及时回复奖!

查看全部评分

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

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2013-5-19 17:28:27 | 显示全部楼层
(SETQ  i -1 )为初始值,
在 (ssname ss (setq i (1+ i) 1+ (-1) 等于0
也就是会返回选择集中的第一个图元

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-5-19 17:56:21 | 显示全部楼层
Lispboy 发表于 2013-5-19 17:18
(while (setq s1 (ssname ss (setq i (1+ i))))

----

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-5-19 18:00:29 | 显示全部楼层
炫翔 发表于 2013-5-19 17:28
(SETQ  i -1 )为初始值,
在 (ssname ss (setq i (1+ i) 1+ (-1) 等于0
也就是会返回选择集中的第一个 ...

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-5-19 18:06:45 | 显示全部楼层
炫翔 发表于 2013-5-19 17:28
(SETQ  i -1 )为初始值,
在 (ssname ss (setq i (1+ i) 1+ (-1) 等于0
也就是会返回选择集中的第一个 ...

追问:
;第一行     ( / i p1 p2 r s1 ss)这些看不懂------------这是什么意思,我看很多程序都有这些,
猜测是 :各赋值的局部变量,,,
如果是局部变量的话,那是跟全局变量又有什么区别???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2013-5-19 18:15:08 | 显示全部楼层
ysq101 发表于 2013-5-19 18:06
追问:
;第一行     ( / i p1 p2 r s1 ss)这些看不懂------------这是什么意思,我看很多程序都有这些, ...

第一行括号里面的为局部变量

全局变量是
多个程序引用同一个变量

被一个程序多次运行是引用
局部变量就是在一个程序运行结束后清零:
(defun X1 () (setq a 1));;;a是全局变量
(defun X2 () (if a (setq a (1+ a))));;a是全局变量
(defun X3 (/ a) (setq a 2));;;a是局部变量
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-5-19 19:02:46 | 显示全部楼层
炫翔 发表于 2013-5-19 18:15
第一行括号里面的为局部变量

全局变量是

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

使用道具 举报

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

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

发表于 2013-5-19 23:48:26 | 显示全部楼层
还是用表生成的快一点。用command 生成的慢!而且变量太多了·!同为新手支持一下 ( / ) 斜杠后面如果不把变量写上去就是全局变量。反之则为局部变量 斜杠前面为传出去的参数!用作子函数时需要!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-20 00:58:39 | 显示全部楼层
上面这种情况,repeat的写法通常会快一些,可能快0.000001秒,呵呵。
当实体多的时候,就比较可观。while和repeat的写法都要学。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-5-20 06:26:30 | 显示全部楼层
xtdwynij 发表于 2013-5-19 23:48
还是用表生成的快一点。用command 生成的慢!而且变量太多了·!同为新手支持一下 ( / ) 斜杠后面如果不把 ...

不仅仅是快慢的问题,command函数不仅受捕捉的影响,而且在使用有些命令时,参数的数目还受另一些设置有关,比如,text命令受style的字高设置影响,设置和不设置固定字高,text的参数是不同的。

点评

还有PEDIT也是。有个变量控制他是否提示。提示与不提示参数不同。 不知道TEXT是否有此变量  发表于 2013-5-20 09:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-5-21 10:07:23 | 显示全部楼层
phoevana 发表于 2013-5-19 22:40
同为新人,前来学习,支持一下

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-5-21 10:07:55 | 显示全部楼层
xtdwynij 发表于 2013-5-19 23:48
还是用表生成的快一点。用command 生成的慢!而且变量太多了·!同为新手支持一下 ( / ) 斜杠后面如果不把 ...

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-5-21 10:08:30 | 显示全部楼层
cy956 发表于 2013-5-20 00:58
上面这种情况,repeat的写法通常会快一些,可能快0.000001秒,呵呵。
当实体多的时候,就比较可观。while ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 09:18 , Processed in 0.426321 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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