检查装置不工作
大家好我有一个文本例程,可以按我想要的方式运行。它检查cannoscalevalue并相应地设置文本大小。
;;Type T1 to start the MTEXT command on the correct layer
(command "-dimstyle" "R" "Standard")
(defun c:T1 ()
(setvar "cmdecho" 0)
(setvar "dimscale" (/ 1.0 (getvar "CANNOSCALEVALUE")))
(setq ins (getvar "insunits"))
(cond
(= (getvar 'dimscale) 1)
(= (getvar 'dimscale) 2)
(= (getvar 'dimscale) 5)
(= (getvar 'dimscale) 10)
(= (getvar 'dimscale) 20)
(= (getvar 'dimscale) 25)
(= (getvar 'dimscale) 50)
(= (getvar 'dimscale) 100)
(= (getvar 'dimscale) 200)
(= (getvar 'dimscale) 250)
(= (getvar 'dimscale) 500)
(= (getvar 'dimscale) 1000)
(= (getvar 'dimscale) 2000)
(= (getvar 'dimscale) 2500)
(= (getvar 'dimscale) 5000)
(= (getvar 'dimscale) 10000)
)
(setq scale (getvar "DIMSCALE"))
(setq ln (strcat "L-TEXT-SMLL-"(rtos scale 2 0)))
(command "-LAYER" "m" ln "co" "7" ln "p" "p" ln "")
(setvar "CECOLOR" "bylayer")
(prompt "\n Please pick your start point for DTEXT ")
(setvar "TEXTSTYLE" "Standard")
(setvar "TEXTSIZE" (* 1.8(getvar "DIMSCALE")))
(initdia)(command "mtext" pause)
(setvar "cmdecho" 1)
(princ)
)
现在,我想添加一些代码来检查图形是以毫米为单位还是以米为单位,并应用比例来说明这一点。下面是我用红色添加的内容
;;Type T1 to start the MTEXT command on the correct layer
(command "-dimstyle" "R" "Standard")
(defun c:T1 ()
(setvar "cmdecho" 0)
(setq ins (getvar "insunits"))
(cond
((= ins 4)
(setvar "dimscale" (/ 1.0 (getvar "CANNOSCALEVALUE")))
((= ins 6)
(setvar "dimscale" (/ 0.001 (getvar "CANNOSCALEVALUE")))
(= (getvar 'dimscale) 1)
(= (getvar 'dimscale) 2)
(= (getvar 'dimscale) 5)
(= (getvar 'dimscale) 10)
(= (getvar 'dimscale) 20)
(= (getvar 'dimscale) 25)
(= (getvar 'dimscale) 50)
(= (getvar 'dimscale) 100)
(= (getvar 'dimscale) 200)
(= (getvar 'dimscale) 250)
(= (getvar 'dimscale) 500)
(= (getvar 'dimscale) 1000)
(= (getvar 'dimscale) 2000)
(= (getvar 'dimscale) 2500)
(= (getvar 'dimscale) 5000)
(= (getvar 'dimscale) 10000)
)
(setq scale (getvar "DIMSCALE"))
(setq ln (strcat "L-TEXT-SMLL-"(rtos scale 2 0)))
(command "-LAYER" "m" ln "co" "7" ln "p" "p" ln "")
(setvar "CECOLOR" "bylayer")
(prompt "\n Please pick your start point for DTEXT ")
(setvar "TEXTSTYLE" "Standard")
(setvar "TEXTSIZE" (* 1.8(getvar "DIMSCALE")))
(initdia)(command "mtext" pause)
(setvar "cmdecho" 1)
(princ)
)
但我得到了一个错误:输入的列表格式不正确
我对COND语句没有真正的理解,并且假设我的语法不正确。有人能建议帮忙吗?
谢谢
保罗
嗨,保罗,
在例程中传递给cond函数的值有什么用途?
无论代码做什么,都缺少两个括号,因为我在以下更正中突出显示了它们:
(cond
((= (setq ins (getvar "insunits")) 4)(setvar "dimscale" (/ 1.0 (getvar "CANNOSCALEVALUE"))))
((= ins 6) (setvar "dimscale" (/ 0.001 (getvar "CANNOSCALEVALUE"))))
)
感谢您回复塔尔瓦特。
好问题。我在没有这个代码的情况下试过,它仍然有效。这是一个遗留代码,我认为它是为了强制例程仅在公司默认范围内运行。
谢谢-效果很好。你能解释一下为什么代码不需要
就像是
4 不客气。
没有任何区别,我只是将获取系统变量“insunits”的表达式移动到cond函数中的第一个表达式中,以避免重复使用分配给它的变量,即“ins”两次,并减少程序中的行数,所有这些都与您在示例中所做的相同。
如果愿意,可以将其移回cond函数之外,不会造成任何伤害。
谢谢塔瓦。我理解-这是对代码的更有效使用。再次感谢您的帮助。
没错,不客气。
页:
[1]