lulang 发表于 2018-7-24 16:27:53

图层操作碰到通配符怎么办?

       (while (< i lenth)
         (command "layer" "on" (nth i lat0)"")
         (setq i (+ i 1))
       )

命令中一小段代码, lato 为需要打开的图层集合,现在碰到这么个问题,当图层名中包含“#”时,比如"S-1#楼|构件",无法打开该图层。
应该是通配符"#"的原因。
测试了一下,如果,把名字改成"S-1*楼|构件",就可以打开。但是,按通配符规则在名字前加“`”, 即, (strcat "`" lato), 也还是打不开。
请教各位大神,碰到带“#”的图层名,有什么办法吗?



llsheng_73 发表于 2018-7-24 16:46:05

(setq lat0'("DLS#S" "0"))

(foreach la lat0
(if(setq la(tblobjname"layer"la))
    (entmod(setq la(entget la)
               co(cdr(assoc 62 la))
               la(append la(list(cons 62 (- co))))))))

masterlong 发表于 2018-7-24 17:16:39

楼上方法不合适
还是特殊字符前加`比较好
(defun checkstr( nm / nmlist newlist )
        (setq nmlist (vl-string->list nm))
        (setq newlist '())
        (foreach x nmlist
                (if (member x '(35 64 46 126 91 93 42 44))
                        (setq newlist (cons x (cons 96 newlist)))
                        (setq newlist (cons x newlist))
                )
        )
        (vl-list->string (reverse newlist))
)

masterlong 发表于 2018-7-24 17:21:48

楼主有一个错误
`要加到每个特殊符号之前
而不是整个字符串之前

lulang 发表于 2018-7-24 17:38:43

原来如此,去试试,感谢

tryhi 发表于 2018-7-25 16:13:47

masterlong 发表于 2018-7-24 17:21
楼主有一个错误
`要加到每个特殊符号之前
而不是整个字符串之前

是不是漏了两个字符
[]*?#@.~,`

masterlong 发表于 2018-7-25 16:24:13

楼上是说漏了`和?这两个符号?
这两个符号不能用于层名、块名的
所以函数里确实没有它们

magicheno 发表于 2025-1-24 22:43:04

masterlong 发表于 2018-7-24 17:16
楼上方法不合适
还是特殊字符前加`比较好
(defun checkstr( nm / nmlist newlist )


给力~刚好用到哈
页: [1]
查看完整版本: 图层操作碰到通配符怎么办?