明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1256|回复: 3

[已解答] 菜鸟写的代码,求解答为什么总是只能执行一个子程序,求前辈指点解答

  [复制链接]
发表于 2013-6-30 13:18:11 | 显示全部楼层 |阅读模式
程序目的为了修改文字的高度和倾斜的,执行后总是只能执行第一个子程序,本人为业余自学lisp,水平很菜,如有前辈赐教,不甚感激!
(defun c:9test4()
    (prompt"\n《框选欲修改的文字》")
   (setq old_hh (getvar "textsize"))
   (setq str_hh (strcat "\n输入新文字高度<" (rtos old_hh 2) ">: "))
   (setq hh (getdist str_hh))
   (if (null hh)
    (setq hh old_hh)
    )
   (setq ang (getangle "\n输入倾斜角 <30>: "))
   (if (null ang)
   (setq ang (/ pi 6)))
   (setq  ss (ssget))
   (setq  i 0 )
   (setq  nn (sslength ss))
   (repeat  nn
      (setq ssn (ssname ss i))
      (setq ssdata (entget ssn))
      (setq sstyp (cdr (assoc 0 ssdata)))
      (if  (= sstyp "TEXT")
         (text_h)
         (text_a)
         )
         (setq  i (1+ i))
   )
     (prin1)
  )
     (defun text_h()
                (setq old_hh (assoc 40 ssdata))
                (setq new_hh (cons 40 hh))
                (setq ssdata (subst new_hh old_hh ssdata))
                                )
       (defun text_a()
              (setq old_ang (assoc 51 ssdata))
              (setq new_ang (cons 51 ang))
              (setq ssdata (subst new_ang old_ang ssdata))
                   (entmod ssdata)
                    )
                    (prompt "\n << 9TEST4>>连续修改多个文字的高度和倾斜度")
                     (prin1)
发表于 2013-6-30 13:56:42 | 显示全部楼层
  1. (if  (= sstyp "TEXT")
  2.          (text_h)
  3.          (text_a))
复制代码
这段代码用错了,看看if函数的用法
(if (条件表达式) (条件为真时执行的表达式) (条件为假时的表达式))
所以在这里(text_h)是条件为真时的执行的,(text_a)是条件为假时执行的。

你是想在条件为真时按顺序执行(text_h)和(text_a)这两个表达式,所以应该用progn函数对这两个表达式求值。正确的写法如下:
  1. (if  (= sstyp "TEXT")
  2.         (progn (text_h)
  3.                   (text_a)))
 楼主| 发表于 2013-6-30 14:01:04 | 显示全部楼层
vormittag 发表于 2013-6-30 13:56
这段代码用错了,看看if函数的用法
(if (条件表达式) (条件为真时执行的表达式) (条件为假时的表达式))
所 ...

谢谢,懂了
发表于 2013-10-21 22:42:23 | 显示全部楼层
vormittag 发表于 2013-6-30 13:56
这段代码用错了,看看if函数的用法
(if (条件表达式) (条件为真时执行的表达式) (条件为假时的表达式))
所 ...

感谢了,学习了if执行子程序的的方法,你真是好人啊,这么详细的回答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 00:16 , Processed in 0.170540 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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