找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1190|回复: 5

[求助] [求助]:默认选择及输入问题:

[复制链接]
发表于 2006-6-22 10:06:05 | 显示全部楼层 |阅读模式

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

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

×
下面这一段程序实现的是通过选择二个点及预设的宽度,确定填充范围来填充预定图案。

“SC” 为填充图案的比例,在命令运行后,需要输入一个数值。但是在下次再使用这个命令时,还是要重新输入,感觉很麻烦,有没有办法可以让“Sc” 记住上次使用该命令时的输入数值?

“Mod”为填充方式,有二个选项“V H”,同样是要每次都输入,可以可以把他默认为“H”,仅空格就能达到输入H的目的?[PHP](Defun C:wf (/ P1 P2 P3 P4 Sc W H Ro Roa el Ln On)
  (prompt "\n 该命令将绘制一个焊缝图案")
  (setq        p1 (getpoint "\n请选择焊缝起点: ")
        P2 (Getpoint P1 "\n请选择焊缝终点: "))
  (Setq Sc (Getreal "\n输入焊缝比例: "))
  (setq        P3 (polar P2 (+ (angle p1 p2) (angtof "90")) 4)
        p4 (polar P1 (+ (angle p1 p2) (angtof "90")) 4))
  (initget 1 "V H")
  (setq Mod (strcase (getkword "\n垂直于焊接面(V)/正常(H):")))
  (cond        ((= Mod "V") (setq Ro (+ (atof (angtos (angle p1 p2))) 45)))
        ((= Mod "H") (setq Ro (atof (angtos (angle p1 p2) 0 1))))
  )
  (command "pline" p1 p2 p3 p4 "c")
  (setq el (entlast))
  (command "-bhatch" "p" "ANSI31" Sc Ro "S" el "" "")
  (command "erase" el "")
  (PRINC)
)[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-6-22 16:40:10 | 显示全部楼层
1. 将"SC"改为较长有特色不大容易跟其他变量重名的名字,然后设成全局变量。

2. 将下面两句替换
(cond    ((= Mod "V") (setq Ro (+ (atof (angtos (angle p1 p2))) 45)))
    ((= Mod "H") (setq Ro (atof (angtos (angle p1 p2) 0 1))))
  )
——〉
(if (or (= mod "V") (= mod "v"))
    (setq ro (+ (atof (angtos (angle p1 p2))) 45))
    (setq ro (atof (angtos (angle p1 p2) 0 1)))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-22 20:24:14 | 显示全部楼层
  1. [FONT=courier new](Defun C:wf (/ P1 P2 P3 P4 W H Ro Roa el Ln On)
  2.   (if (null scc)
  3.     (setq scc 1)
  4.   )
  5.   (if (null Mod)
  6.     (setq Mod "V")
  7.   )
  8.   (prompt "\n该命令将绘制一个焊缝图案")
  9.   (setq        p1  (getpoint "\n请选择焊缝起点: ")
  10.         P2  (Getpoint P1 "\n请选择焊缝终点: ")
  11.         Scc (UREAL 7 "" "输入焊缝比例" scc)
  12.         P3  (polar P2 (+ (angle p1 p2) (angtof "90")) 4)
  13.         p4  (polar P1 (+ (angle p1 p2) (angtof "90")) 4)
  14.   )
  15.   (setq mod (UKWORD 7 "V H" "垂直于焊接面(V)/正常(H)" mod))
  16.   (cond        ((= Mod "V") (setq Ro (+ (atof (angtos (angle p1 p2))) 45)))
  17.         ((= Mod "H") (setq Ro (atof (angtos (angle p1 p2) 0 1))))
  18.   )
  19.   (command "pline" p1 p2 p3 p4 "c")
  20.   (setq el (entlast))
  21.   (command "-bhatch" "p" "ANSI31" Scc Ro "S" el "" "")
  22.   (command "erase" el "")
  23.   (princ)
  24. )
  25. (defun ukword (bit kwd msg def / inp)
  26.   (if (and def (/= def ""))
  27.     (setq msg (strcat "\n" msg "<" def ">:")
  28.           bit (* 2 (fix (/ bit 2)))
  29.     )
  30.     (setq msg (strcat "\n" msg ":"))
  31.   )
  32.   (initget bit kwd)
  33.   (setq inp (getkword msg))
  34.   (if inp
  35.     inp
  36.     def
  37.   )
  38. )
  39. (defun ureal (bit kwd msg def / inp)
  40.   (if def
  41.     (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
  42.           bit (* 2 (fix (/ bit 2)))
  43.     )
  44.     (setq msg (strcat "\n" msg ": "))
  45.   )
  46.   (initget bit kwd)
  47.   (setq inp (getreal msg))
  48.   (if inp
  49.     inp
  50.     def
  51.   )
  52. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-23 09:19:28 | 显示全部楼层
试过,可行,但是能不能说下是怎么实现的呢?我想要的,不仅是可以用,还要知道是怎么样做出来的。

我现在就是想在输入比例的时候,换成输入字符,但是却被提示要输入数值。

所以,请指教下是怎么实现的。那样省掉我频繁发同种贴子,搞得像灌水一样。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-7-3 16:48:59 | 显示全部楼层
源程序都给出来了,还要问是怎么实现的。你需要的不是频繁发同种贴子,而是好好看看参考书或是函数说明
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-7-5 17:51:09 | 显示全部楼层
菜鸟的答案

1.让"Sc" 记住上次使用该命令时的输入数值:

首先把局部变量 Sc 升级为全局变量, 增加一局部变量 Sctmp

  (Setq Sc (Getreal "\n输入焊缝比例: "))

改为

  (if (null Sc)  (setq Sc 1.0)) ;;第一次运行时赋值为1.0

  (setq Sctmp (getreal (strcat "\n输入焊缝比例<" (rtos Sc) ">: ")))

  (if Sctmp (setq Sc Sctmp))


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 11:00 , Processed in 0.182007 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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