找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 781|回复: 6

[求助] [求助]:麻烦高手给我看下修改圆半径的两程序

[复制链接]
发表于 2006-1-17 23:05:39 | 显示全部楼层 |阅读模式

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

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

×
一个是教材的,运行都出错
先谢了!

  1. (defun c:xg_bj()
  2.    (setvar "cmdecho" 0)
  3.    (princ "\n选取要修改的圆...")
  4.    (setq ss (ssget))
  5.    (setq old_rr (getvar "circlerad"))
  6.    (setq str_rr (strcat "\n新直径<" (rtos (* old_rr 2) 2) ">:"))
  7.    (setq rr (getdist str_rr))
  8.    (if (null rr)
  9.        (setq rr old_rr)
  10.        (setq rr (/ rr 2.0))
  11.     )
  12.    (setq n 0)
  13.    (repeat (sslength ss)
  14.            (setq ssn (ssname ss n))
  15.            (setq ssdata (entget ssn))
  16.            (if (= (cdr (assoc 0 ssdata)) "CIRCLE")
  17.                (progn
  18.                  (setq new_rr (cons 40 rr))
  19.                  (setq old_rr (assoc 40 ssdata))
  20.                  (setq ssdata (subst new_rr old_rr ssdata))
  21.                  (entmod ssdata)
  22.                 )
  23.             )
  24.            (setq n (1+ n))
  25.     )
  26.    (prin1)
  27. )


  28. ***************************************************************
  29. (defun c:xg_bj ()
  30.    (setvar "cmdecho" 0)
  31.    (princ "\n 请选取要修改的圆:")
  32.    (if (setq ss (ssget (list (cons 0 "CIRCLE"))))
  33.        (progn     
  34.            (setq rr (getreal "\n请输入圆新半径:"))
  35.            (setq n 0)
  36.            (repeat (sslength ss)
  37.               (setq en (ssname ss n))
  38.               (setq entlist (entget en))
  39.               (setq new_rr (cons 40 rr))
  40.               (setq old_rr (assoc 40 entlist))
  41.               (setq entlist (subst new_rr old_rr entlist))
  42.               (entmod entlist)
  43.               (setq n (1+ n))
  44.             )
  45.         )
  46.    )
  47.    (princ)
  48. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-1-18 07:55:37 | 显示全部楼层
上面一个程序这句的当中有个括号不对:
(setq str_rr (strcat "\n新直径<" (rtos (* old_rr 2) 2) ">:"))    ;_倒数第3个括号

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

使用道具 举报

已领礼包: 111个

财富等级: 日进斗金

发表于 2006-1-18 08:36:04 | 显示全部楼层
括号必须为英文半角字符才行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-18 09:00:17 | 显示全部楼层
第一个程序的错误: (setq str_rr (strcat "\n新直径<" (rtos (* old_rr 2) 2) ">:"))
第二个程序的错误:  )
                     (princ)

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

使用道具 举报

 楼主| 发表于 2006-1-18 12:34:15 | 显示全部楼层
谢谢 都解决了
还请教调试程序的技巧
以及一些错误提示该怎么解读
请高手帮帮忙
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-19 22:36:40 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib.vlx")  ;版本 V.20060116 (1972)
  2. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  3. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  4. ★1·在acad.lsp中增加(load"xyp_lib.vlx")
  5. ■2·在每个程序内增加(load"xyp_lib.vlx")
  6. ■3·在command下,输入(load"xyp_lib.vlx")
  7. ■4·在菜单.mnl中增加(load"xyp_lib.vlx")
  8. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  9. [COLOR=red] ★通用函数下载地址:[/COLOR]
  10. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  11. |;

  12. (defun c:test ()
  13.   (CMDLA0)
  14.   (if (null rad)
  15.     (setq rad (getvar "circlerad"))
  16.   )
  17.   (setq        ss  (ssget '((0 . "CIRCLE,ARC")))
  18.         rad (UREAL 7 "" "\n请输入圆新半径" rad)
  19.         i   -1
  20.   )
  21.   (while (setq s1 (ssname ss (setq i (1+ i))))
  22.     (sub_upd s1 40 rad)
  23.   )
  24.   (CMDLA1)
  25. )

  26. (defun c:xg_bj ()
  27.   (setvar "cmdecho" 0)
  28.   (princ "\n 请选取要修改的圆:")
  29.   (if (setq ss (ssget (list (cons 0 "CIRCLE"))))
  30.     (progn
  31.       (setq rr (UREAL 7 "" "\n请输入圆新半径" rr)
  32.             n  -1
  33.       )
  34.       (repeat (sslength ss)
  35.         (setq entlist (entget (ssname ss (setq n (1+ n)))))
  36.         (entmod (subst (cons 40 rr) (assoc 40 entlist) entlist))
  37.       )
  38.     )
  39.   )
  40.   (princ)
  41. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-21 22:53:01 | 显示全部楼层
(defun c:CIRCLE-CR()
      (IF (SETQ SSOBJ(SSGET '(( 0 . "CIRCLE"))))
          (PROGN
                (SETQ R (GETDIST (STRCAT "\n 输入圆的新半径:<" (RTOS (VLAX-LDATA-GET "XET-DIC" "XET-DIC-CIRCLE-R" 10)) ">")))
                (IF (= R NIL)
                    (SETQ R (VLAX-LDATA-GET "XET-DIC" "XET-DIC-CIRCLE-R" 10))
                    (VLAX-LDATA-PUT "XET-DIC" "XET-DIC-CIRCLE-R" R)
                    )
                (SETQ INDEX 0)
                (REPEAT (SSLENGTH SSOBJ)
                      (VLA-PUT-RADIUS (VLAX-ENAME->VLA-OBJECT (SSNAME SSOBJ INDEX )) R)
                      (SETQ INDEX (1+ INDEX))
                      )
                )
          )
      )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 01:22 , Processed in 0.315207 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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