定义子程序时可以设置缺省参数吗?
譬如附图中的程序有5个参数,调用时我只想填入3个,另外两个采用默认值。代码要怎么写?
(defun XP-MakeLine (P10 P11 LayerName color LineType /)
(entmake (list '(0 . "LINE")
(cons 8 LayerName)
(cons 62 color)
(cons 6 LineType)
(cons 10 P10)
(cons 11 P11)
)
)
(entlast)
)
(defun c:tt (/)
(XP-MakeLine (getpoint) (getpoint) "0" 256 "BYLAYER")
)
除了把多个参数放在一个list中外,还有什么方法没?
有没有标准的做法? 加一句缺省的取值就行啦,比如颜色 (if (not color) (setq color 1)) start4444 发表于 2020-3-1 19:33
加一句缺省的取值就行啦,比如颜色 (if (not color) (setq color 1))
会报错,说缺少参数。
(defun bb-Make-Line (lst / list1 list2 )
(set 'leng(lengthlst))
(cond
((= leng 2)(entmakex (list(cons 0 "LINE")(cons 10 (car lst))(cons 11 (cadr lst))))(entlast))
((= leng 3)(entmakex (list(cons 0 "LINE")(cons 8 (caddr lst))(cons 10 (car lst))(cons 11 (cadr lst))))(entlast))
((= leng 4)(entmakex (list(cons 0 "LINE")(cons 8 (caddr lst))(cons 10 (car lst))(cons 11 (cadr lst))(cons 62 (cadddr lst))))(entlast))
((= leng 5)(entmakex (list(cons 0 "LINE")(cons 6(nth 4 lst))(cons 8 (caddr lst))(cons 10 (car lst))(cons 11 (cadr lst))(cons 62 (cadddr lst))))(entlast))
))
(bb-Make-Line(list(getpoint)(getpoint)))
(bb-Make-Line(list(getpoint)(getpoint) "0"))
(bb-Make-Line(list(getpoint)(getpoint) "0" 1 ))
(bb-Make-Line(list(getpoint)(getpoint) "0" 2 "BYLAYER"))
1291500406 发表于 2020-3-1 22:02
(defun bb-Make-Line (lst / list1 list2 )
(set 'leng(lengthlst))
(cond
不用列表作为参数可以实现吗? (defun c:13(/)
(XP-MakeLine (getpoint) (getpoint) ()()())
) AutoLISP 写的函数不支持参数缺省。
arx写的函数给LISP用,这些函数可以有缺省。 e2002 发表于 2020-3-2 15:33
AutoLISP 写的函数不支持参数缺省。
arx写的函数给LISP用,这些函数可以有缺省。
谢谢E大!!!!! etoxp 发表于 2020-3-1 23:31
不用列表作为参数可以实现吗?
将就着用吧
页:
[1]