找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 961|回复: 11

[求助] [求助]:跪求高手们改一下这个程序,让其可以保存上次输入的值?

[复制链接]
发表于 2006-1-14 12:35:40 | 显示全部楼层 |阅读模式

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

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

×
(DEFUN C:WELD ()
        (Setvar "cmdecho" 0)
        (setq s (getvar "snapang"))
        (setq p1 (getpoint "\n焊缝起始点:"))
        (setq p2 (getpoint p1 "\焊缝结束点:"))
        (setq z (getreal "\n焊缝尺寸<弧半径>大小:"))
        (setq oldosmode (getvar "osmode"))
        (Setvar "osmode" 0)
        (setq p3 (polar p1 (angle p1 p2) (* 2 z)))
        (command "arc" p1 "e" p3 "a" 180)
        (setq p4 (polar p3 (- (angle p1 p2) (* 120 (/ PI 180))) Z))
        (setq n (- (/ (distance p1 p2) z) 2))
        (command "arc" p4 "c" p3 "a" 120)
        (setq x 1)
        (while (<= x n) (setq x (+ x 1)))
        (setvar "snapang" (angle p1 p2))
        (command "array" "last" "" "r" "" (- x 1) z)
        (setvar "snapang" 0)
        (setvar "osmode" oldosmode)
        (princ)
)


跪求高手们改改上面的程序?
让其可以保存上次用户输入的弧半径大小值,最后让其生成的焊缝弧是一个组,且组名为程序随机产生的?
不知道用程序能实现不?
谢谢了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-1-14 14:42:43 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib.vlx")                        ;版本 V.20051230 (1873)
  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. ;;焊缝
  13. (DEFUN C:WELD ()
  14.   (CMDLA0)
  15.   (setvar "PICKSTYLE" 3)
  16.   (if (null z)
  17.     (setq z 10)
  18.   )
  19.   (setq        p1  (getpoint "\n焊缝起始点:")
  20.         p2  (getpoint p1 "\n焊缝结束点:")
  21.         z   (UREAL 7 "" "\n焊缝尺寸<弧半径>大小" z)
  22.         ss1 (ssget "x")
  23.   )
  24.   (Setvar "osmode" 0)
  25.   (setq p3 (polar p1 (angle p1 p2) (* 2 z)))
  26.   (command "arc" p1 "e" p3 "a" 180)
  27.   (setq        p4 (polar p3 (- (angle p1 p2) (* 120 (/ PI 180))) Z)
  28.         n  (fix (- (/ (distance p1 p2) z) 2))
  29.   )
  30.   (command "arc" p4 "c" p3 "a" 120)
  31.   (setvar "snapang" (angle p1 p2))
  32.   (command "array" "last" "" "r" "" n z)
  33.   (setvar "snapang" 0)
  34.   (setq        ss2 (ssget "X")
  35.         ss  (SSDIFF SS2 SS1)
  36.   )
  37.   (command "group" "" "*" "" ss "")
  38.   (CMDLA1)
  39. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-14 14:48:40 | 显示全部楼层
"焊缝弧是一个组"是什么意思?为什么要随机产生?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2006-1-14 15:12:29 | 显示全部楼层
最初由 xyp1964 发布
[B][CODE](load "xyp_lib.vlx")                        ;版本 V.20051230 (1873)
;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序... [/B]


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

使用道具 举报

发表于 2006-1-14 15:33:51 | 显示全部楼层
最初由 taner 发布
[B]如果将程序里的变量全部设为局部变量,则还是不能保留上次的输入啊[/B]

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

使用道具 举报

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

使用道具 举报

发表于 2006-1-14 16:23:23 | 显示全部楼层
最初由 andyhua5240 发布
[B]能不能不用加载楼主的通用函数就可以做到呀?
谢谢! [/B]

不下载这个程序,可能不行。呵呵……

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

使用道具 举报

 楼主| 发表于 2006-1-14 16:48:29 | 显示全部楼层
谢谢斑竹大人,非常好的东东。有个问题想反应一下,能提供源码下载吗?
因为程序第一次运行时,清空了用户的osmode的值。想自己改改,但是改不了?
我的要求是不是太多了,对不住了!
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-14 20:08:18 | 显示全部楼层
最初由 andyhua5240 发布
[B]谢谢斑竹大人,非常好的东东。有个问题想反应一下,能提供源码下载吗?
因为程序第一次运行时,清空了用户的osmode的值。想自己改改,但是改不了?
我的要求是不是太多了,对不住了!
谢谢! [/B]

二楼的就是源码!
对于“程序第一次运行时,清空了用户的osmode的值”不太明白是什么意思。

改进版--可以连续“焊”。
  1. [FONT=courier new](DEFUN C:WELD (/ p1 p2 p3 p4 n s1 s2 ss os)
  2.   (CMDLA0)
  3.   (setvar "PICKSTYLE" 3)
  4.   (if (null Ra)
  5.     (setq Ra 10)
  6.   )
  7.   (setq        Ra (UREAL 7 "" "\n焊缝尺寸<弧半径>大小" Ra)
  8.         os (getvar "osmode")
  9.   )
  10.   (if (setq p1 (getpoint "\n焊缝起始点<退出>: "))
  11.     (progn
  12.       (while (setq p2 (getpoint p1 "\n焊缝结束点<退出>: "))
  13.         (setq s1 (ssget "x")
  14.               p3 (polar p1 (angle p1 p2) (* 2 Ra))
  15.               p4 (polar p3 (- (angle p1 p2) (* 120 (/ PI 180))) Ra)
  16.               n         (fix (- (/ (distance p1 p2) Ra) 2))
  17.         )
  18.         (Setvar "osmode" 0)
  19.         (command "arc" p1 "e" p3 "a" 180)
  20.         (command "arc" p4 "c" p3 "a" 120)
  21.         (setvar "snapang" (angle p1 p2))
  22.         (command "array" "last" "" "r" "" n Ra)
  23.         (setvar "snapang" 0)
  24.         (setvar "osmode" os)
  25.         (setq s2 (ssget "X")
  26.               ss (SSDIFF s2 s1)
  27.               p1 p2
  28.         )
  29.         (command "group" "" "*" "" ss "")
  30.       )
  31.     )
  32.   )
  33.   (CMDLA1)
  34. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-15 10:14:13 | 显示全部楼层
斑竹大人呀:
  跪求你能将9楼的改进版做个单独的附件下载!因为我下载您老的那个通用函数,用wkai斑竹的aut不知道如何加载好,要输入启动命令的,我不知道输入什么好?
有个问题想说一下:一般情况下,我们是将pickstyle设置为1的,而不是3,如果设置为3,那选择填充时,连填充边界也选择上了,如果我填充的墙,做成剪力墙,那选择solid图案时,不是也选择了墙线吗?所以设置为3,我是认为不方便的?能设置为1不?
谢谢啦!谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-4 10:25:53 | 显示全部楼层
加速版
  1. [FONT=courier new](defun c:hf (/ p1 p2 p0 p3 p4 n ss s0 os)
  2.   (CMDLA0)
  3.   (setvar "PICKSTYLE" 1)
  4.   (if (null Ra)
  5.     (setq Ra 10)
  6.   )
  7.   (setq        Ra (UREAL 7 "" "\n焊缝尺寸<弧半径>大小" Ra)
  8.         os (getvar "osmode")
  9.   )
  10.   (if (setq p1 (getpoint "\n焊缝起始点<退出>: "))
  11.     (progn
  12.       (while (setq p2 (getpoint p1 "\n焊缝结束点<退出>: "))
  13.         (setq p0 p2
  14.               ss (ssadd)
  15.               p3 (polar p1 (angle p1 p2) (* 2 Ra))
  16.               p4 (polar p3 (- (angle p1 p2) (* 120 (/ PI 180))) Ra)
  17.               n         (- (fix (- (/ (distance p1 p2) Ra) 2)) 1)
  18.         )
  19.         (Setvar "osmode" 0)
  20.         (command "arc" p1 "e" p3 "a" 180)
  21.         (setq ss (ssadd (entlast) ss))
  22.         (command "arc" p4 "c" p3 "a" 120)
  23.         (setq s0  (entlast)
  24.               ss  (ssadd s0 ss)
  25.               rad (angle p1 p2)
  26.         )
  27.         (repeat        n
  28.           (setq p2 (polar p1 rad ra))
  29.           (command "copy" s0 "" p1 p2)
  30.           (setq        s0 (entlast)
  31.                 ss (ssadd s0 ss)
  32.                 p1 p2
  33.           )
  34.         )
  35.         (setvar "osmode" os)
  36.         (command "group" "" "*" "" ss "")
  37.         (setq p1 p0)
  38.       )
  39.     )
  40.   )
  41.   (CMDLA1)
  42. )[/FONT]

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

使用道具 举报

发表于 2006-3-4 15:16:08 | 显示全部楼层
保存上次输入值可利用vl-registry-read和vl-registry-write函数读写注册表实现;随机组名可编写一随机函数产生,随机函数以前论坛讨论过多次,你搜搜看!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 04:03 , Processed in 0.336029 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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