本帖最后由 菜卷鱼 于 2015-11-5 14:24 编辑
像(rtos number [mode [precision]]) , mode 跟 precision 这两个变量爱填不填,函数都能使用,这种效果怎么弄出来的?
根据两位大神的回答,那我只能把程序这样弄了
用来测试的程序是用来排序的,论坛里有很多这种功能的,不过我这个跟他们的有点不一样
;(vla-sort 选择集 属性名称 排序方式) 举例 (vla-sort ss 'EffectiveName > ) 按块名排序
;假如排序属性是列表的话
;(vla-sort 选择集 ‘(属性名称 要比较的第几个位置) 排序方式) 举例 (vla-sort ss ’(InsertionPoint 1) < ) 按插入点排序,1是X,2是Y ,3是Z坐标 - (defun vla-sort (ss mark syb / ns sl)
- (setq ns (ssadd) sl nil)
- (setq i -1)
- (repeat (sslength SS)
- (setq sl (cons (ssname SS (setq i (1+ i))) sl))
- )
- (cond
- ((= (type mark) 'SYM)
- (setq sl
- (vl-sort
- sl
- (function
- (lambda (X Y)
- (Syb
- (vlax-get (vlax-ename->vla-object X) mark)
- (vlax-get (vlax-ename->vla-object Y) mark)
- )
- )
- )
- )
- )
- )
- ((= (type mark) 'LIST)
- (setq sl
- (vl-sort
- sl
- (function
- (lambda (X Y)
- (Syb
- (NTH (1- (CADR mark)) (vlax-get (vlax-ename->vla-object X) (car mark)))
- (NTH (1- (CADR mark)) (vlax-get (vlax-ename->vla-object Y) (car mark)))
- )
- )
- )
- )
- )
- ))
- (foreach x sl (setq ns (ssadd x ns)))
- )
|