;;建筑层数排序,早期也玩过的。dwg001
(defun c:tt (/ al bl i j l m n)
(setq l '("-2层" "1层"
排序有问题哟,4-15偶数层 在前! 此題"4-15偶數層"應該在"4-15奇數層"之前
這類排序不具通用性,屋頂層、地下層、甚至地面層常有不同表示方式,建議有樓層表可對照排序 q3_2006 发表于 2013-8-11 15:15 static/image/common/back.gif
排序有问题哟,4-15偶数层 在前!
;;再增加一个若干层奇偶数层的判断。如"4-15奇数层" "4-15偶数层" "43-50奇数层" "43-50偶数层"
(foreach x m
(if(wcmatch x "*奇数层")(progn
(setq jsch xjscwz (vl-position x m))
(setq y (vl-string-right-trim "奇数层" x))
(setq nn (vl-string-position (ascii "-") y))
(setq str-q (read (substr y 1 nn)))
(if (zerop (rem str-q 2.0))
(progn
(setq cl '() dl '()k -1 r (1+ jscwz) )
(repeat jscwz
(setq cl (cons (nth (setq k (1+ k)) m) cl))
)
(repeat (- (length m) jscwz 2)
(setq dl (cons (nth (setq r (+ 1 r)) m) dl))
)
(setq m (append (reverse cl) (list (strcat y "偶数层"))(list (strcat y "奇数层")) (reverse dl) ))
)
) ) ) )
命令: tt
原始list=("-2层" "1层" "2层" "16层" "3层" "-6层" "4-15奇数层" "屋面层"
"4-15偶数层" "17层" "-3层" "-1层" "99层" "43-50奇数层" "43-50偶数层")
排序list=("-6层" "-3层" "-2层" "-1层" "1层" "2层" "3层" "4-15偶数层"
"4-15奇数层" "16层" "17层" "43-50奇数层" "43-50偶数层" "99层" "屋面层") dwg001 发表于 2013-8-11 17:52 static/image/common/back.gif
;;再增加一个若干层奇偶数层的判断。如"4-15奇数层" "4-15偶数层" "43-50奇数层" "43-50偶数层"
(for ...
明白了,谢谢高人指点! 谢谢dwg001,问题算是解决了!
说来惭愧,对于(Vl-sort l '(lambda(a b)(< (atoi a) (atoi b))))
表达式后面(< (atoi a) (atoi b))还不是怎么理解atoi? jaminth 发表于 2013-8-11 20:08 static/image/common/back.gif
谢谢dwg001,问题算是解决了!
说来惭愧,对于(Vl-sort l '(lambda(a b)(< (atoi a) (atoi b))))
表达式后 ...
取整按升序重排! 谢谢楼上! 不错,支持10楼 这样的程序没有通用性,应该考虑将层的说法上再规范一些。
页:
1
[2]