创建自定义线条表
在调查业务中,在德克萨斯州这里,我们做了很多记录信息()和邻接记录信息[]。我试图创建一个表,以所附图像中显示的一般格式,但我希望行号的顺序是L1,然后(L1),然后(如果适用),依此类推。目前,我只能选择根据升序或降序对数据进行排序。我已经查看了所有的表格选项,但我没有看到任何允许我这样做的内容。感谢您的帮助。谢谢
T
一种粗略的方法可能是将表格读入一个列表,希望Lee能够读入并对列表进行排序,识别“(alpha”v的“alpha”。然后以新的顺序重写表格。它可能需要一个非显示字符,如上图所示,您有3个字符可供排序。 这也是我所想的,但我不知道如何实现它。
可能是左侧的一列,仅用于排序。可能是动态块? Weldriller用(a7)2 a3(a6)在a列上尝试排序。我将保存悬念。不起作用。这是我第一次尝试的。
李,你在哪里?你是我所知道的唯一一个可能解决这个问题的大师,是的,可能需要一个隐藏的字符作为(a1)v的a1 我把你的帖子移到了AutoLISP、Visual LISP和DCL论坛,也许你会在这里找到一些解决方案。 好的,艾尔,你引起了我的注意
我不确定预期的排序顺序,但以下函数演示了一种排序方法:
(defun surveysort-i ( lst )
(vl-sort-i (mapcar 'strcase lst)
(function
(lambda ( a b / x y )
(setq x (ascii a)
y (ascii b)
)
(cond
( (or (= 91 x y) (= 40 x y)
(and (not (or (= 40 x) (= 91 x)))
(not (or (= 40 y) (= 91 y)))
)
)
(< (vl-string-trim "()[]" a) (vl-string-trim "()[]" b))
)
( (not (or (= 40 x) (= 91 x))))
( (not (or (= 40 y) (= 91 y))) nil)
( (= 40 x))
)
)
)
)
)示例:
_$ (setq lst '("L3" "" "" "(L1)" "B2" "" "(A1)" "L1" "(B1)" "A1"))
_$ (mapcar '(lambda ( n ) (nth n lst)) (surveysort-i lst))
("A1" "B2" "L1" "L3" "(A1)" "(B1)" "(L1)" "" "" "")
当前代码在排序“L1”和“L10”方面仍然存在问题,但它演示了这个概念。 谢谢李,这更接近了,至少现在你有了一个排序列表,我会重写整个表,正如我在第一篇文章中建议的那样,比较两个列表,按李排序的列表和表条目
("A1" "B2" "L1" "L3" "(A1)" "(B1)" "(L1)" "" "" "")
("A1" "N23" "12" "32" "E" "401.123" "B2" "N31" "23'" "45" "E" "104.256"..........
无需进行列表比较,因为我提出的排序函数使用vl-sort-I,因此重新定位的项目的索引是已知的-然而,我想在进一步讨论示例之前确认排序顺序。 谢谢李,你现在一定很晚才看到这篇文章。 但也许警察想要这个订单
("A1" "(A1)" "" "" "(B1)" "" "B2" "L1" "(L1)" "L3")
页:
[1]
2