[自动LIS]排序代码
你好与以这种方式获得的AutoLISP一样,排序列表。(见附件)。
查看此线程:
http://www.theswamp.org/index.php?topic=41463 非常感谢你。 ; ----- 表达式周围出错-----
(VL-STRING-ELT A I)
;
; 错误:参数类型错误;在处应为
对于列表(附加)
函数eea-str\u int\u sort2
???
lista。txt文件 该列表似乎包含符号名而不是字符串。此外,您还没有包括其余的代码。
从这个错误来看,I变量似乎不包含整数。请参阅vl string elt的帮助。
你使用了其他线程中的任何特定defun吗?还是你在其中改变了什么? 你好
我也有同样的问题
(defun c:trewq ( / )
(eea-str_int_sort2 (list "DN1""DN10""DN11""DN12""DN13""DN14""DN15""DN16""DN17""DN2""DN3""DN4""DN5""DN6""DN7""DN8""DN9)t)
)
(VL-STRING-ELT A I)
;bad argument type <3> ; expected <INTEGER> at
但如果列表如下所示:
(eea-str_int_sort2 (list"DN1x""DN10""DN11""DN12""DN13""DN14""DN15""DN16""DN17""DN2""DN3""DN4""DN5""DN6""DN7""DN8""DN9")t )
没关系。
我做错什么了吗?。你在哪里工作。请帮忙。 首先,你的列表不正确,它没有结束:。。。“DN9)…应该是…”DN9“。。。
其次,我认为你发现了Evgeniy代码的问题。如果我在他的代码上运行它:
但是使用Lee的文件端口2似乎是可行的:
Command: (_filesort2 (list "DN1""DN10""DN11""DN12""DN13""DN14""DN15""DN16""DN17""DN2""DN3""DN4""DN5""DN6""DN7""DN8""DN9") t)
("DN1" "DN2" "DN3" "DN4" "DN5" "DN6" "DN7" "DN8" "DN9" "DN10" "DN11" "DN12" "DN13" "DN14" "DN15" "DN16" "DN17") 首先是我的错误。
第二,感谢您的快速回复。 这是我对Evgeniy函数的修改版本,它应该可以在您的示例中成功执行:
(defun eea-lm-str_int_sort ( l f )
(mapcar (function (lambda ( a ) (nth a l)))
(vl-sort-i (if f (mapcar 'strcase l) l)
(function
(lambda ( a b / i )
(setq i (vl-string-mismatch a b))
(cond
( (zerop i)
(if (and (< 47 (ascii a) 58) (< 47 (ascii b) 58))
(< (atoi a) (atoi b))
(< a b)
)
)
( (= i (strlen a)))
( (= i (strlen b)) nil)
( (and
(< 47 (vl-string-elt a i) 58)
(< 47 (vl-string-elt b i) 58)
)
(< (atoi (substr a (1+ i))) (atoi (substr b (1+ i))))
)
( (< 47 (vl-string-elt a (1- i)) 58)
(< (atoi (substr a i)) (atoi (substr b i)))
)
( (< a b))
)
)
)
)
)
)
我想对位置2列表排序 类似这样:
_$ (eea-lm-str_int_sort '("DN1" "DN10" "DN11" "DN12" "DN13" "DN14" "DN15" "DN16" "DN17" "DN2" "DN3" "DN4" "DN5" "DN6" "DN7" "DN8" "DN9") t)
("DN1" "DN2" "DN3" "DN4" "DN5" "DN6" "DN7" "DN8" "DN9" "DN10" "DN11" "DN12" "DN13" "DN14" "DN15" "DN16" "DN17")
页:
[1]
2