ktbjx 发表于 2022-7-5 17:49:25

在中按高程创建过滤器

我想自动化过滤器,有可能吗?
在工作中,我们正在处理大量的地图和图层,我想通过高程对其进行过滤,以便于访问。。
 
层看起来像这样:

 
我想按海拔过滤
喜欢这样的东西:

samifox 发表于 2022-7-5 18:08:25

您可以使用属性过滤器,只需创建一个,然后在“名称”列中输入例如*900,
然后,包含900的所有层将被分组到此文件夹中。
 
它使用通配符匹配

ktbjx 发表于 2022-7-5 18:12:01

 
谢谢,先生!我是从你那里得到这个主意的
 
(defun c:ff(/ layerelev q1)
(prompt "\nCreates FILTER?!")
(princ)
(setq Layerelev(getstring "\nEnter ELEVATION:"))
   (setq q1 (strcat "*" Layerelev))
(command "._-layer" "filter" "New" "Group" "" q1 layerelev "" "")
   (princ)
)
 
但当我放入WHILE循环时,它说“错误:SETQ中的参数太少:(SETQ)”
 
(defun c:ffLayers(/Celev1 Celev2 contstring)(setq Celev1(getint“\n输入第一个高程:”)(setq Celev2(getint“\n输入最后一个高程:”)(而(

Jef! 发表于 2022-7-5 18:20:13

你好,ktbjx。
 
我个人在你的代码中看到了另一个错误。
Celev1是一个整数,所以要在strcat中使用它,必须将其从整数转换为alpha
 
(defun c:ffLayers(/Celev1 Celev2 contstring)(setq Celev1(getint“\n输入第一个高程:”)(setq Celev2(getint“\n输入最后一个高程:”)(而(

ktbjx 发表于 2022-7-5 18:30:39

 
哇!谢谢你指出这一点,大帮助!
我会用这个!!!再次谢谢你,先生

Jef! 发表于 2022-7-5 18:42:15

 
非常欢迎!

BIGAL 发表于 2022-7-5 18:55:41

也许以后我会用
(rtos celev1 2 0),因为这只允许整数
(rtos celev1 2 1),因为这允许1位小数,例如0.5等高线等。
(rtos celev1 2 2)2位小数
页: [1]
查看完整版本: 在中按高程创建过滤器