weiqi 发表于 2013-1-27 12:52:14

求继续修改,把点选改成框选。

本帖最后由 weiqi 于 2013-1-27 13:14 编辑

http://bbs.mjtd.com/thread-100064-1-1.html
之前发过这个帖~得到相关LISP代码后,还不是非常理想。
现在 是点选 框,一次一 次点选,最后一次性输出。
我想得到一个是框选 然后一次性输出全部。
麻烦高手的修改一下。






cable2004 发表于 2013-1-27 12:52:15

(defun c:cdx1 (/ lst ss lin data pts xx ens len n str strs pt-ins ptlst)
(setvar "cmdecho" 0)
(princ "\n选择方框<空格退出>:")
(setq lst nil i -1)
(setq ss (ssget (list (cons 0 "lwpolyline"))))
(while (setq lin (ssname ss (setq i (1+ i))))
    (setqdata (entget lin)
           ptsnil
    )
    (foreach xx        data
      (if (= 10 (car xx))
        (setq pts (cons (cdr xx) pts))
      )
    )
;;;    (command ".zoom" "W" (car pts) (caddr pts))
    (setq ens (ssget "cp" pts '((0 . "TEXT") (8 . "E-PE,e-id"))))
;;;    (command ".zoom" "p")
    (or ens (setq ens (ssadd)))
    (setq len(sslength ens)
          n    0
          strs nil
    )
    (while (< n len)
      (setq en       (ssname ens n)
          data (entget en)
      )
      (setq strs (cons (cons (cdr (assoc 10 data))
                             (strcat " " (cdr (assoc 1 data)))
                     )
                     strs
               )
      )
      (setq n (1+ n))
    )
    (if        strs
      (progn
        (setq
          strs (vl-sort        strs
                        '(lambda (e1 e2) (> (cadar e1) (cadar e2)))
             )
        )
        (setq str "")
        (foreach xx strs (setq str (strcat str (cdr xx))))
        (initget 1)
        (setq lst (cons str lst))
      )
      (princ "\n不包含指定层文字!")
    )
    (princ "\n选择方框<空格退出>:")
)
(setq pt-ins (getpoint "\n指定一点:"))
(setq ptlst nil)
(repeat (setq n (length lst))
    (setq ptlst       (cons pt-ins ptlst)
          pt-ins (polar pt-ins (* 1.5 pi) 555)
    )
)
(mapcar '(lambda (x y)
             (entmake
             (list
               '(0 . "TEXT")
               '(100 . "AcDbEntity")
               '(8 . "E-PE")
               '(62 . 110)
               '(100 . "AcDbText")
               (cons 10 y)
               '(40 . 444.444)
               (cons 1 x)
               '(41 . 0.7)
               '(7 . "HZ")
             )
             )
           )
          lst
          ptlst
)
(setvar "cmdecho" 1)
(princ)
)

ZZXXQQ 发表于 2013-1-27 13:06:41

链接给错了

weiqi 发表于 2013-1-28 20:38:26

顶一下,望高手出手
页: [1]
查看完整版本: 求继续修改,把点选改成框选。