wzg356 发表于 2024-10-5 16:45:46

my快选4.5的选择函数ssgetplus应用简介

本帖最后由 wzg356 于 2024-10-5 16:52 编辑

函数名ssgetplus
特色:带命令行及屏幕提示
      点选、框/反选规则与ssget一致
      组码与特性混合过滤
返回:选择集或nil      
调用格式(ssgetplus sel fls msg)
参数msg:可以为nil 空字串或提示字串,有的有效关键字的提示无效或有格式化提示
参数fls:可以为nil或ssget的表过滤
       也可以可组码与特性混写
       数值型特性可以加入"=" "/=" ">" ">=" "<" "<="运算符字串或容差--数字字符      
参数sel:可为nil或空字串或关键字字串"L" "X" "P" "A" "I" "F""CP""WP" 及":E"和":S"组合
      可为nil 或空格
      "F""CP""WP"可互相切换---格式化提示 指定提示无效了
      关键字"L" "X" "P" "A" "I"提示就无效无意义了
      关键字无效时与nil 或空格等价

函数在这个工具里面下载http://bbs.mjtd.com/thread-189250-1-1.html
涉及的源代码我帖子发过一些
由于兼顾我其他程序使用,代码有些冗长,未单独完成整理(很烧脑),暂不发了。
加载上面的选择工具就可以执行下面语句例子了

(ssgetplus nil nil "点取或框选对象<>:")
(if ssgetplus
      (ssgetplus nil '((8 . "0")(0 . "LWPOLYLINE")) "选0层多线段\n拾取或框选对象<>:")
      ;可用\N多行显示---提示尽量简洁
      ;这种用法比较多
      (progn(princ "选0层多线段")(ssget '((8 . "0")(0 . "LWPOLYLINE"))))
      ;没有加载ssgetplus函数就用后面这句建议写法
)
(ssgetplus nil (list '(8 . "0") '(0 . "LWPOLYLINE")'(Closed . -1)(cons ">=" '(AREA . 10000))) "选0层闭合多线段\n开发区大户型\n点取或框选对象:")
;选0层面积不小于10000的的闭多线段--- 命令行回显数量 面积汇总
(ssgetplus nil (list '(8 . "0") '(0 . "LWPOLYLINE")'(Closed . -1)(cons "3000.0" '(AREA . 10000))) "点取或框选对象:")
;选0层面积7000-13000的的闭多线段
;注意表结构(cons运算符/容差字串(cons 特性 特性值)) --运算符/容差字串只对数值型特性有效
;这部分逻辑理解要求高

(ssgetplus "CP" (list '(8 . "0") '(0 . "LWPOLYLINE")'(Closed . -1)(cons "3000.0" '(AREA . 10000))) "")
;圈交选择0层面积7000-13000的的闭多线段----栏选、圈围、圈交可切换-----格式化提示 指定提示无效了

(ssgetplus ":e:s" (list'(0 . "LWPOLYLINE")'(Closed . -1)) "选择1条封闭多线段\n点取对象:")
;可以":e"(点取) ":s"(一次结束)分别试验
(ssgetplus "c" (list'(0 . "LWPOLYLINE")'(Closed . -1)) "选择封闭多线段对象:");无效关键字



你有种再说一遍 发表于 2024-10-5 20:35:11

其实,过滤器是用来服务于索引的...
每当看到你们写新的ssget而没有写索引就觉得路子歪了
页: [1]
查看完整版本: my快选4.5的选择函数ssgetplus应用简介