请问各位高手: 如何编写生成所选框内并且匹配过滤符表的实体选择集.
我的目的是这样的:
此段程序用来汇一个DWG文件中的管子材料的,是一个文件一张图.现在想改成一个文件多张图, 下列语句需要加上框选条件,点由用户输入:
(setq ab (ssget "X" (list '(0 . "TEXT") (cons 8 layer))))
;;;其中layer为变量
已经知道框选的两个点:
(setq w1 (list (+ x1 112) (+ y1 -117)))
(setq w2 (list (+ x1 -320) (+ y1 190)))
如何利用 (ssget "WP" pt_list 过滤符表) 选择在w1 w2 框内的,并且在layer层上的所有TEXT.我在R14上没有调试成功.
(1) (setq ab (ssget "W" w1 w2 (list '(0 . "TEXT") (cons 8 layer))))
(2) (setq ab (ssget "WP" (list w1 w2) (list '(0 . "TEXT") (cons 8 layer))))
请教各位如何实现上述功能.
下面为管段图汇料原程序的一部分:
- ;;;;;;========管子汇料=====<1>
- (princ)
- (princ "搜索管子")
- (setq filename1 (strcat "c:\\cad-r14\\iso-edb\" xmgh_tpdi "\" djdh "\" djdh "gj.txt" ))
- (setq fp (open filename1 "r"))
- (while (setq dn (read-line fp))
- (setq filename (strcat "c:\\cad-r14\\iso-edb\" xmgh_tpdi "\" djdh "\" djdh "gz.txt"))
- (setq f (open filename "r")) (setq dn1 "333")
- (while (/= dn dn1)
- (setq sz (read-line f))
- (setq sza (read sz))
- (setq dn1 (nth 0 sza))
- (if (= dn dn1)
- (progn
- (setq gj (nth 1 sza)) (setq bh (nth 2 sza)) (setq ms (nth 3 sza))
- (setq cl (nth 4 sza)) (setq by1 (nth 5 sza))(setq by2 (nth 6 sza))
- (setq desc (strcat "PIPE" " " gj "''" " " bh " " ms))
- (setq layer (strcat dn djdh "-iso"));;;;求层名
- ))
- );;;end while
- (close f)
-
- ;;;========管子汇料开始
- [b][U][I](setq ab (ssget "X" (list '(0 . "TEXT") (cons 8 layer))))[/I][/U][/b]
- ;;;上句
- (if (/= ab nil)
- (progn
- (setq i 0)
- (while (< i (sslength ab))
- (setq b (ssname ab i))
- (setq a (entget b))
- (setq text (assoc '1 a))
- (setq text (cdr text))
- (setq gz-sl (+ gz-sl (atof text)))
- (setq i (+ 1 i))
- )
- (setq gz-sl (/ gz-sl 1000))
- (setq gz-sl (rtos gz-sl 2 2))
- (if (/= gz-sl 0)
- (progn
- (setq gz-sl (strcat gz-sl "m"))
- (command "text" p1 2.3 0 desc)
- (command "text" p2 2.3 0 cl)
- (command "text" p3 2.3 0 gz-sl)
- ;;;^*^
- (princ)(princ "搜索管子")
- (setq gz-sl 0)
- (setq y1 (+ y1 6))
- (setq p1 (list x1 y1));;DESCRIPTION
- (setq p2 (list (+ x1 59.5) y1));;MATERIAL
- (setq p3 (list (+ x1 75.5) y1));;QTY
- (setq p4 (list (+ x1 85.3) y1));;REMARK
- );;over progn
- );;;;over if
- );;;over progn
- );;;;over if
- (PRINC".")
- );;;end 每层循环结束
- (close fp);;;;关掉管径数据库
- ;;;;;;;;=======管子汇料结束
|