明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 726|回复: 9

[提问] 定义子程序时可以设置缺省参数吗?

[复制链接]
发表于 2020-3-1 16:19:01 | 显示全部楼层 |阅读模式
譬如附图中的程序有5个参数,调用时我只想填入3个,另外两个采用默认值。
代码要怎么写?


  1. (defun XP-MakeLine (P10 P11 LayerName color LineType /)
  2.   (entmake (list '(0 . "LINE")
  3.      (cons 8 LayerName)
  4.      (cons 62 color)
  5.      (cons 6 LineType)
  6.      (cons 10 P10)
  7.      (cons 11 P11)
  8.      )
  9.   )
  10.   (entlast)
  11. )

  12. (defun c:tt (/)
  13.   (XP-MakeLine (getpoint) (getpoint) "0" 256 "BYLAYER")
  14. )


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2020-3-1 16:21:11 | 显示全部楼层
除了把多个参数放在一个list中外,还有什么方法没?
有没有标准的做法?
发表于 2020-3-1 19:33:59 | 显示全部楼层
加一句缺省的取值就行啦,比如颜色 (if (not color) (setq color 1))
 楼主| 发表于 2020-3-1 21:03:40 | 显示全部楼层
start4444 发表于 2020-3-1 19:33
加一句缺省的取值就行啦,比如颜色 (if (not color) (setq color 1))

会报错,说缺少参数。
发表于 2020-3-1 22:02:49 | 显示全部楼层

(defun bb-Make-Line (lst / list1 list2 )
(set 'leng(length  lst))
(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"))


 楼主| 发表于 2020-3-1 23:31:38 | 显示全部楼层
1291500406 发表于 2020-3-1 22:02
(defun bb-Make-Line (lst / list1 list2 )
(set 'leng(length  lst))
(cond

不用列表作为参数可以实现吗?
发表于 2020-3-2 10:52:55 | 显示全部楼层
(defun c:13(/)
  (XP-MakeLine (getpoint) (getpoint) ()()())
)
发表于 2020-3-2 15:33:42 | 显示全部楼层
AutoLISP 写的函数不支持参数缺省。
arx写的函数给LISP用,这些函数可以有缺省。
 楼主| 发表于 2020-3-2 18:12:31 | 显示全部楼层
e2002 发表于 2020-3-2 15:33
AutoLISP 写的函数不支持参数缺省。
arx写的函数给LISP用,这些函数可以有缺省。

谢谢E大!!!!!
发表于 2020-3-2 20:03:35 | 显示全部楼层
etoxp 发表于 2020-3-1 23:31
不用列表作为参数可以实现吗?

将就着用吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 07:57 , Processed in 0.168960 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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