明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3485|回复: 19

[基础] [求助]如何让输入的是字母,输出的却是文字说明 已解决

  [复制链接]
发表于 2010-10-7 22:22:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-10-9 7:18:10 编辑

    在 cad作图时,往往需要输入一些说明文字(文字是固定的类型),为了快捷,将他们分别用一个字母来代替。
 例如: 即在敲入s ,输出的却是“水泥地”,敲入 W,输出的是“围墙”,等等。

    (if hz
      ()
       (setq hz "")
       )

(SETQ nhz (GETSTRING (strcat "\n类型:S:水泥地 W:围墙 F:房角 H:花圃 <" lx "> :>" )))

 

  (cond
      ((= (strcase nhz nil) "S") (SETQ LX "水泥地"))
      ((= (strcase nhz nil) "W") (SETQ LX "围墙"))
      ((= (strcase nhz nil) "H") (SETQ LX "花圃"))
      (T (setq  LX nhz))
      )

 

     (setq hz lx )

   请问,这样的语句要如何写才能实现?
   请高手指点,或者帮我完善。

  在此先谢了。

 

 

 

已解决

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2010-10-7 22:38:00 | 显示全部楼层

  

 

(SETQ nhz (GETSTRING (strcat "\n类型:S:水泥地 W:围墙 F:房角 H:花圃 <" lx "> :>" )))

 

  (cond
      ((= (strcase nhz nil) "S") (aaa))
      ((= (strcase nhz nil) "W") (ABB))
      ((= (strcase nhz nil) "H") (ABC))
      )

 

(defun  aaa()

        (setq  p1 (getpoint "\n指定文字点:"))

(command "text" "j" "tl" p1 "" "" "水泥地" "")
)

(defun  aBB()

        (setq  p1 (getpoint "\n指定文字点:"))

(command "text" "j" "tl" p1 "" "" "围墙" "")
)

(defun  aBC()

        (setq  p1 (getpoint "\n指定文字点:"))

(command "text" "j" "tl" p1 "" "" "花圃" "")
)

 楼主| 发表于 2010-10-7 23:19:00 | 显示全部楼层

谢谢楼上

我现在试一试。

好像是把他们分别写了,是否要分别敲击命令呢?

谢了

 楼主| 发表于 2010-10-7 23:30:00 | 显示全部楼层

我加了一个命令语句试了一下

(defun c: 102()

(SETQ nhz (GETSTRING (strcat "\n类型:S:水泥地 W:围墙 F:房角 H:花圃 <" lx "> :>" )))

 

  (cond
      ((= (strcase nhz nil) "S") (aaa))
      ((= (strcase nhz nil) "W") (ABB))
      ((= (strcase nhz nil) "H") (ABC))
      )

 

(defun c: aaa()

        (setq  p1 (getpoint "\n指定文字点:"))

(command "text" "j" "tl" p1 "" "" "水泥地" "")
)

(defun  aBB()

        (setq  p1 (getpoint "\n指定文字点:"))

(command "text" "j" "tl" p1 "" "" "围墙" "")
)

(defun  aBC()

        (setq  p1 (getpoint "\n指定文字点:"))

(command "text" "j" "tl" p1 "" "" "花圃" "")
)
)

 

 

显示语法错误,不知道要如何修改了。

还是谢谢楼上的关注

发表于 2010-10-8 00:13:00 | 显示全部楼层

1.c: 102去空格

2.c: aaa去c:

发表于 2010-10-8 00:15:00 | 显示全部楼层
另外lx的值要预先定义
 楼主| 发表于 2010-10-8 06:16:00 | 显示全部楼层
masterlong发表于2010-10-8 0:15:00另外lx的值要预先定义

 请问lx的值要预先定义,是要如何设置?

我改成:

 

(defun c:102()

(SETQ nhz (GETSTRING (strcat "\n类型:S:水泥地 W:围墙 F:房角 H:花圃 <" lx "> :>" )))

 

  (cond
      ((= (strcase nhz nil) "S") (aaa))
      ((= (strcase nhz nil) "W") (ABB))
      ((= (strcase nhz nil) "H") (ABC))
      )

 

(defun aaa()

        (setq  p1 (getpoint "\n指定文字点:"))

(command "text" "j" "tl" p1 "" "" "水泥地" "")
)

(defun  aBB()

        (setq  p1 (getpoint "\n指定文字点:"))

(command "text" "j" "tl" p1 "" "" "围墙" "")
)

(defun  aBC()

        (setq  p1 (getpoint "\n指定文字点:"))

(command "text" "j" "tl" p1 "" "" "花圃" "")
)
)

 

运行还是出错,显示

  

 

C:102
命令: 102
; 错误: 参数类型错误: stringp nil

 

请问是什么原因?

 

另外看见有

(setq dh1 (getvar "users4"))

 

(SUBSTR (getvar "users5"))

等语句,请问users5与users4是什么意思?是代表变量值吗?

望指教。

谢谢

 

发表于 2010-10-8 12:53:00 | 显示全部楼层

(defun c:t1 (/ aa p01 p02 text1)
(princ "\n***MTEXT加强***")
(princ "\n类型:S:水泥地 W:围墙 F:房角 H:花圃")
(setq aa (cadr (grread)))
(cond
    ((or (= aa 115)(= aa 83)) (setq text1 "水泥地")
    (while (not p01) (setq p01 (getpoint "\n指定第一角点: ")))
    (while (not p02)(setq p02 (getcorner p01 "\n指定第二角点: ")))     
    ) 

    ((or (= aa 119)(= aa 87)) (setq text1 "围墙")
    (while (not p01) (setq p01 (getpoint "\n指定第一角点: ")))
    (while (not p02)(setq p02 (getcorner p01 "\n指定第二角点: ")))     
    )

    ((or (= aa 102)(= aa 70)) (setq text1 "房角")
    (while (not p01) (setq p01 (getpoint "\n指定第一角点: ")))
    (while (not p02)(setq p02 (getcorner p01 "\n指定第二角点: ")))     
    )

    ((or (= aa 104)(= aa 72)) (setq text1 "花圃")
    (while (not p01) (setq p01 (getpoint "\n指定第一角点: ")))
    (while (not p02)(setq p02 (getcorner p01 "\n指定第二角点: ")))     
    )

)
(command "mtext" p01 "J" "MC" p02 text1 "")
(princ)
)

 楼主| 发表于 2010-10-8 16:59:00 | 显示全部楼层

谢谢8楼

您的方法很好。学习了。

没有明白(= aa 115)(= aa 83)的意思,请指教。

看了值都是一个常数值。

谢谢了

发表于 2010-10-8 17:35:00 | 显示全部楼层

(setq aa (cadr (grread)))

 

上面一句是補捉你的鍵盤輸入,試試將其拷到命令行執行按任意鍵,看返回值

 

(= aa 115)(= aa 83) 中115是小寫“s”   83是大寫”S“的返回值

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-2 14:39 , Processed in 0.201604 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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