图层操作碰到通配符怎么办?
(while (< i lenth)(command "layer" "on" (nth i lat0)"")
(setq i (+ i 1))
)
命令中一小段代码, lato 为需要打开的图层集合,现在碰到这么个问题,当图层名中包含“#”时,比如"S-1#楼|构件",无法打开该图层。
应该是通配符"#"的原因。
测试了一下,如果,把名字改成"S-1*楼|构件",就可以打开。但是,按通配符规则在名字前加“`”, 即, (strcat "`" lato), 也还是打不开。
请教各位大神,碰到带“#”的图层名,有什么办法吗?
(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)))))))) 楼上方法不合适
还是特殊字符前加`比较好
(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
楼主有一个错误
`要加到每个特殊符号之前
而不是整个字符串之前
是不是漏了两个字符
[]*?#@.~,` 楼上是说漏了`和?这两个符号?
这两个符号不能用于层名、块名的
所以函数里确实没有它们
masterlong 发表于 2018-7-24 17:16
楼上方法不合适
还是特殊字符前加`比较好
(defun checkstr( nm / nmlist newlist )
给力~刚好用到哈
页:
[1]