Lee Mac 发表于 2022-7-5 17:07:14

 
这就是我在进一步行动之前想要澄清的。

Squirltech 发表于 2022-7-5 17:12:39

谢谢你们的帮助。
 
我要找的顺序是:A1,(A1),,B2,(B2),等等
 
原始帖子中显示的表格图像显示了我使用Civil3d中的线条表格处理的内容。在处理地块时,用户拥有标的线的方位和距离(B/D),标的地块的记录B/D(),然后是相邻地块的记录B/D[]。因此,排序时,我希望第一个行号不带括号,下一个带括号,下一个带括号,然后对下一个行号重复相同的顺序。
 
T

Lee Mac 发表于 2022-7-5 17:15:03

 
谢谢-这是我之前函数的改进,以生成所需的排序顺序:
或者,使用wcmatch:
示例:
_$ (setq lst '("L3" "" "" "(L1)" "B2" "" "(A1)" "L1" "(B1)" "A1"))
("L3" "" "" "(L1)" "B2" "" "(A1)" "L1" "(B1)" "A1")
_$ (mapcar '(lambda ( n ) (nth n lst)) (surveysort-i lst))
("A1" "(A1)" "" "" "(B1)" "" "B2" "L1" "(L1)" "L3")
 
“线表”是Civil 3D固有的对象类型吗?或者它是否显示为标准AutoCAD表格,并且“Line table”在此上下文中描述了表格内容?
 
您是否能够上载包含此类表格典型示例的样例图形?

Grrr 发表于 2022-7-5 17:19:27

李,做得很好!
我这么说是因为我不懂这些代码中的任何东西——需要一些空闲时间进行分析。

Roy_043 发表于 2022-7-5 17:22:10

或:
(defun surveysort-i (lst)
(vl-sort-i (mapcar 'strcase lst)
   (function
   (lambda (a b)
       (< (vl-string-left-trim "([" a) (vl-string-left-trim "([" b))
   )
   )
)
)

Roy_043 发表于 2022-7-5 17:23:34

或(更好):
8

Grrr 发表于 2022-7-5 17:28:05

第二个很好,罗伊。
我记得有一次我使用了类似于您的第一个代码的东西(但使用vl排序)。
使用vl-sort-i和您在第二个代码中演示的technque,我的猜测是它应该快得多。

Lee Mac 发表于 2022-7-5 17:31:29

这是个好主意,但这些方法依赖于代码(A1、A2等)始终是两个字符,如(ascii“)”

Roy_043 发表于 2022-7-5 17:35:25

@李:你说得对:
9
页: 1 [2]
查看完整版本: 创建自定义线条表