组合多个TBL搜索lin
有没有可能使它更紧凑?(DEFUN C:TEST ()
(if (/= (tblsearch "STYLE" "ROMANS"))
(COMMAND "-STYLE" "ROMANS" "ROMANS" "" "" "" "N" "N" "N")
(if (= (tblsearch "STYLE" "SLDTEXTSTYLE0"))
(COMMAND "-STYLE" "SLDTEXTSTYLE0" "ROMANS" "" "" "" "N" "N" "N")
(if (= (tblsearch "STYLE" "SLDTEXTSTYLE1"))
(COMMAND "-STYLE" "SLDTEXTSTYLE1" "ROMANS" "" "" "" "N" "N" "N")
(if (= (tblsearch "STYLE" "SLDTEXTSTYLE2"))
(COMMAND "-STYLE" "SLDTEXTSTYLE2" "ROMANS" "" "" "" "N" "N" "N")
(if (= (tblsearch "STYLE" "SLDTEXTSTYLE3"))
(COMMAND "-STYLE" "SLDTEXTSTYLE3" "ROMANS" "" "" "" "N" "N" "N")
(if (= (tblsearch "STYLE" "SLDTEXTSTYLE4"))
(COMMAND "-STYLE" "SLDTEXTSTYLE4" "ROMANS" "" "" "" "N" "N" "N")
(if (= (tblsearch "STYLE" "SLDTEXTSTYLE5"))
(COMMAND "-STYLE" "SLDTEXTSTYLE5" "ROMANS" "" "" "" "N" "N" "N")
(if (= (tblsearch "STYLE" "SLDTEXTSTYLE6"))
(COMMAND "-STYLE" "SLDTEXTSTYLE6" "ROMANS" "" "" "" "N" "N" "N")
(if (= (tblsearch "STYLE" "SLDTEXTSTYLE7"))
(COMMAND "-STYLE" "SLDTEXTSTYLE7" "ROMANS" "" "" "" "N" "N" "N")
(if (= (tblsearch "STYLE" "SLDTEXTSTYLE8"))
(COMMAND "-STYLE" "SLDTEXTSTYLE8" "ROMANS" "" "" "" "N" "N" "N")
(PRINC))
请提供指导?
mapcar方法
(defun c:test nil
(mapcar ''((x) (if (not (tblsearch "STYLE" x))
(COMMAND "-STYLE" x "ROMANS" "" "" "" "N" "N" "N")))
((lambda (i / l)
(vl-list* "ROMANS" (repeat 9 (setq l (cons (strcat "SLDTEXTSTYLE"(itoa(setq i (1- i)))) l)))))
9))
(princ))
韩抢在我前面,可怜的打字员。。。
(defun c:test ()
(mapcar
(function
(lambda (x)
(if
(not (tblsearch "style" x))
(COMMAND "-STYLE" x "ROMANS" "" "" "" "N" "N" "N")
)
)
)
'("ROMANS" "SLDTEXTSTYLE0" "SLDTEXTSTYLE1" "SLDTEXTSTYLE2" "SLDTEXTSTYLE2")
)
(princ)
)
好久不见jdiala了!
没有什么能打败你,我也从你那里学到了
另一个
cond方法
编辑:此方法仅在当前样式匹配时应用更改
(defun c:test2 nil
;switch current *style to ROMANS ,which styles are limited by user
(eval
(cons 'cond
(mapcar ''((x)
(list
(equal (cdr(assoc 2 (tblsearch "STYLE" (getvar 'textstyle)))) x)
(cons 'command (list "-STYLE" x "ROMANS" "" "" "" "N" "N" "N")))
) ;_ end of lambda
((lambda (i / l)
(vl-list* "ROMANS"
(repeat 9 (setq l (cons (strcat "STY" (itoa (setq i (1- i)))) l)))
) ;_ end of vl-list*
) ;_ end of lambda
9
)
) ;_ end of mapcar
) ;_ end of cons
) ;_ end of eval
(princ)
)
这解释了在评估之前上述测试2的相似性
;where T= (tblsearch "STYLE" (getvar 'textstyle))
;assume "STY4" is current style, ie: only "STY4" is effected
(COND (nil (COMMAND "-STYLE" "ROMANS" "ROMANS" "" "" "" "N" "N" "N"))
(nil (COMMAND "-STYLE" "STY0" "ROMANS" "" "" "" "N" "N" "N"))
(nil (COMMAND "-STYLE" "STY1" "ROMANS" "" "" "" "N" "N" "N"))
(nil (COMMAND "-STYLE" "STY2" "ROMANS" "" "" "" "N" "N" "N"))
(nil (COMMAND "-STYLE" "STY3" "ROMANS" "" "" "" "N" "N" "N"))
(T (COMMAND "-STYLE" "STY4" "ROMANS" "" "" "" "N" "N" "N")); <-- example curent style= T
(nil (COMMAND "-STYLE" "STY5" "ROMANS" "" "" "" "N" "N" "N"))
(nil (COMMAND "-STYLE" "STY6" "ROMANS" "" "" "" "N" "N" "N"))
(nil (COMMAND "-STYLE" "STY7" "ROMANS" "" "" "" "N" "N" "N"))
(nil (COMMAND "-STYLE" "STY8" "ROMANS" "" "" "" "N" "N" "N"))
) ;_ end of COND
cond方法第三行
(defun c:test3 nil
(COMMAND "-STYLE" (getvar 'textstyle) "ROMANS" "" "" "" "N" "N" "N")
)
的确,我打字打得不好
jdiala打败了我 我想我会倾向于;
''((x) (if (not (tblsearch "STYLE" x))
-大卫
这部分是循环usung repeat,你的例子是0~8
(eval (cons 'not (list '(tblsearch "STYLE" x) 'x)))
编辑:
谢谢David
ILoveMadoka,请注意David先生也使用了重复循环
你在帮我。无需道歉!
非常感谢!
大卫,
我也会看看你的。
谢谢你,先生! 在第4篇文章中更新。
*仅供参考
也许是我的困惑:
如果你不想像帖子#2中那样创建不需要的*样式0~8,
这意味着你指的是已经存在的样式?
更新此
(defun c:rstyle (/ i s)
(if (not (tblsearch "STYLE" "ROMANS"))
(progn
(command "_.STYLE" "ROMANS" "ROMANS")
(while (> (getvar "CMDACTIVE") 0)
(command ""))))
(setq i 0)
(repeat 9
(setq s (strcat "SLDTEXTSTYLE" (itoa i)))
(if (tblsearch "STYLE" s)
(progn
(command "_.STYLE" s "ROMANS")
(while (> (getvar "CMDACTIVE") 0)
(command ""))))
(setq i (1+ i)))
(prin1))
大卫,
这非常有效!非常感谢。
不客气。您可以添加一些错误捕捉,以确保可以制作罗马字母,但大多数系统在搜索路径中都有罗马字母
页:
[1]
2