clint0577 发表于 2022-7-6 07:12:09

使用选项创建文本

我正在做一个例程,这是我第一次尝试使用COND和IF,我遇到了一个如何结束例程的问题。到最后,我有
 
(IF (EQ YR "N.F.H.A.")

(COMMAND "MTEXT" "_non" pt1 "J" "MC" "S" "STANDARD" "H" TH "W" TW L1 L2 "")
 
我需要它跳过
如果该语句为true,则继续。我确信这是一个简单的解决方法,我只是没有看到它。提前谢谢。
 
这是一切
 
(DEFUN c:LF ()

(SETQ CL (GETVAR "CLAYER"))

(command "layer" "M" "FLOOD" "C" "70" "" "L" "BORDER2" "" "S" "FLOOD" "")

(command ".osnap" "NONE")

(setq DS (getvar 'dimscale))

(SETQ TW (* DS 1.3))

(SETQ TH (* DS 0.07))

(setq pt1 (getpoint "\nPick Insertion Point: "))

(SETQ L1 (STRCAT "APPROX. LOCATION"))

(if (eq (setq ZN (getstringT "\nFlood Zone A, AE or X?: <X> ")) "")

(setq zn "X"))

(COND ((EQ ZN "A")(setq YR "100"))

   ((EQ ZN "AE")(SETQ yr "100"))

(t (IF (EQ (setq YR (getstringT "\n500 or NFHA? <NFHA> : ")) "")

(SETQ YR "N.F.H.A."))))

(COND ((EQ YR "100")(SETQ L2 (STRCAT "ZONE " ZN " " YR "YR")))

   ((EQ YR "500")(SETQ L2 (STRCAT "ZONE " ZN " " YR "YR")))

(T (SETQ L2 (STRCAT "ZONE " ZN " " YR ))))

;===============================PAST THIS POINT IS WHERE I'M HAVING THE ISSUE=======================================================

(IF (EQ YR "N.F.H.A.")

(COMMAND "MTEXT" "_non" pt1 "J" "MC" "S" "STANDARD" "H" TH "W" TW L1 L2 "")

(setq L3 (getstring t "\nType Flood Panel Number: "))

(setq FD (getstring t "\nType Flood Panel Date \"MM/DD/YY\": "))

(SETQ L4 (STRCAT "DATE " FD))

(COMMAND "MTEXT" "_non" pt1 "J" "MC" "S" "STANDARD" "H" TH "W" TW L1 L2 L3 L4 ""))

(COMMAND "CLAYER" CL)

)

Lee Mac 发表于 2022-7-6 07:33:33

提示:progn

clint0577 发表于 2022-7-6 07:46:33

所以我很接近。。。这是个好消息。

clint0577 发表于 2022-7-6 08:07:08

谢谢李没有给我解决方案。我做了一点研究,得到了它!
 
3

Lee Mac 发表于 2022-7-6 08:21:14

 
干得好,克林特!
 
以下几点有助于进一步改进代码:
 
[列表]
[*]记住本地化变量
[/列表]
 
[列表]
[*]在提示用户时,使用条件表达式(if/cond)允许空用户输入(例如getpoint)
[/列表]
 
[列表]
[*]除非连接两个或多个字符串,否则不需要strcat。
[/列表]
 
[列表]
[*]使用(princ)或(prin1)抑制最后计算的表达式的返回,并“干净地”退出命令。
[/列表]
 
[列表]
[*]如果用户按Esc键或程序遇到错误,考虑使用重新定义的*error*函数重置系统变量值。
[/列表]
页: [1]
查看完整版本: 使用选项创建文本