找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 617|回复: 6

[讨论]:请高手帮忙。

[复制链接]
发表于 2005-2-28 22:24:12 | 显示全部楼层 |阅读模式

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

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

×
今天我做了一个雪花纷飞可不就是不成攻能帮我看一下,以下的程序到底错在那里给小弟指点?
题目:
选取两圆EN1及EN2,作两条内公切线,并将EN2圆内侧虚线剪掉,询问阵列次数NN,以EN1圆心为阵列中心点,作环形阵列。
(defun c:lsp7()
  (setvar "cmdecho" 0)
  (setq en1 (entsel "\n先取圆1:"))
  (setq en2 (entsel "\n选取圆2:"))
  (setq en1data (entget en1))
  (setq en2data (entget en2))
  (setq cen1 (assoc 10 enldata))
  (setq cen2 (assoc 10 en2data))
  (setq r1 (assoc 40 en1data))
  (setq r2 (assoc 40 en2data))
  (setq ang (angle cen1 cen2))
  (setq p1 (polar cen1 (+ ang (/ pi 2)) r1))
  (setq p2 (polar cen1 (- ang (/ pi 2)) r1))
  (setq p3 (polar cen2 (+ ang (/ pi 2)) r2))
  (setq p4 (polar cen2 (- ang (/ pi 2)) r2))
  (command "line" "tan" p1 "tan" p4 "")
  (setq en3 (entlast))
  (command "line" "tan" p2 "tan" p3 "")
  (setq en4 (entlast))
  (setq nn (getint "\n重复次数<8>:"))
  (if (null nn) (setq nn 8))
  (command "trim" en3 en4 "" (list en2 (polar cen2 ang (* -1 r2))) "")
  (command "array" en3 en4 (polar cen2 ang r2) "" "p" cen1 nn "" "")
  (prin1)
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 11304个

财富等级: 富甲天下

发表于 2005-2-28 23:42:42 | 显示全部楼层
修改后:

  1. (defun c:lsp7()
  2. (setvar "cmdecho" 0)
  3. (setq en1 (entsel "\n先取圆1:"))
  4. (setq en2 (entsel "\n选取圆2:"))
  5. (setq en1data (entget (car en1)))
  6. (setq en2data (entget (car en2)))
  7. (setq cen1 (cdr (assoc 10 en1data)))
  8. (setq cen2 (cdr (assoc 10 en2data)))
  9. (setq r1 (cdr (assoc 40 en1data)))
  10. (setq r2 (cdr (assoc 40 en2data)))
  11. (setq ang (angle cen1 cen2))
  12. (setq p1 (polar cen1 (+ ang (/ pi 2)) r1))
  13. (setq p2 (polar cen1 (- ang (/ pi 2)) r1))
  14. (setq p3 (polar cen2 (+ ang (/ pi 2)) r2))
  15. (setq p4 (polar cen2 (- ang (/ pi 2)) r2))
  16. (command "line" "tan" p1 "tan" p4 "")
  17. (setq en3 (entlast))
  18. (command "line" "tan" p2 "tan" p3 "")
  19. (setq en4 (entlast))
  20. (setq nn (getint "\n重复次数<8>:"))
  21. (if (null nn) (setq nn 8))
  22. (command "trim" en3 en4 "" "nea" (polar cen2 ang (* -1 r2)) "")
  23. (command "array" en3 en4 (polar cen2 ang r2) "" "p" cen1 nn "" "")
  24. (prin1)
  25. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-1 13:20:51 | 显示全部楼层
这里为什么不用(setq cen1(assoc 10 en1data))) 而用 (setq cen1 (cdr (assoc 10 en1data)))  ?
还有这条1.(setq r2 (assoc 40 en2data)) 而用2.(setq r2 (cdr (assoc 40 en2data)))
1.r2求出来就是半径了  为什么还要加上一个cdr呢?
这么兄台你能帮我一下吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-1 15:59:55 | 显示全部楼层
下面这段是任一个圆的DXF数据:
选择对象: ((-1 . <图元名: 7ef55558>) (0 . "CIRCLE") (330 . <图元名: 7ef53cc0>)
(5 . "1D3") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "CONTINUOUS")
(100 . "AcDbCircle") (10 98.5853 117.008 0.0) (40 . 26.1973) (210 0.0 0.0 1.0))

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

使用道具 举报

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

使用道具 举报

发表于 2005-3-1 21:38:50 | 显示全部楼层
DXF格式中规定,每一个列表代表图形的每一个数据,为了区别和易于阅读每一组数据都用“组码和数据”进行点对,你要求的是数据就得把数据从它所属的列表中提取出来,要不取出来的是列表是不能参与你后面的运算的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 22:58 , Processed in 0.186731 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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