cadamrao 发表于 2022-7-6 07:51:43

选择相似项

你好
我需要为((水平线、多段线或垂直线、多段线)选择类似的LISP。plz查找示例附件。
我感谢您的快速回复
文基

Tharwat 发表于 2022-7-6 08:06:23

这是我的版本,可以根据用户的选择选择垂直或水平线/多段线。
 

(defun c:Test (/ sel ss go)
(vl-load-com)
;;;;*******      Tharwat 14. June . 2012   ******* ;;;;;;
;;;;This peice of code to select Horizontal or Vertical ;;;;;
;;;;lines or Polylines according to user's choose       ;;;;;
(defun Catch (ang1 ang2 ss)
   ((lambda (l / i n sn e x p1 p2)
      (while (setq sn (ssname ss (setq l (1+ l))))
      (setq e (entget sn))
      (if (wcmatch (cdr (assoc 0 (entget sn))) "*POLYLINE")
          (progn
            (setq i 0
                  n 0
            )
            (repeat (setq x (fix (vlax-curve-getendparam sn)))
            (if
                (or
                  (equal
                  (angle (setq p1 (vlax-curve-getpointatparam sn i))
                           (setq p2 (vlax-curve-getpointatparam
                                    sn
                                    (setq i (1+ i))
                                    )
                           )
                  )
                  ang1
                  )
                  (equal (angle p1 p2) ang2)
                )
               (setq n (1+ n))
            )
            )
            (if (eq n x)
            (ssadd sn sel)
            )
          )
          (if
            (or (eq (angle (cdr (assoc 10 e)) (cdr (assoc 11 e))) ang1)
                (eq (angle (cdr (assoc 10 e)) (cdr (assoc 11 e))) ang2)
            )
             (ssadd sn sel)
          )
      )
      )
    )
   -1
   )
   (princ)
)
(if
   (and (setq sel (ssadd))
      (progn
          (initget "Horizontal Vertical")
          (setq go (getkword "\n Choose one :"))
      )
      (setq ss (ssget "_:L" '((0 . "*POLYLINE,LINE"))))
   )
    (if (eq go "Horizontal")
      (Catch 0.0 pi ss)
      (Catch (/ pi 2.) (* pi 1.5) ss)
    )
)
(if (> (sslength sel) 0)
   (sssetfirst nil sel)
)
(princ)
)

BlackBox 发表于 2022-7-6 08:19:56

也许我错过了什么。。。鉴于上面发布的示例屏幕截图,为什么SELECTSIMILAR命令不起作用?

Tharwat 发表于 2022-7-6 08:25:19

 
首先,OP使用cad 2006,新命令在cad 2012之前不可用,
第二个问题是,角度选项在新的命令调用中不可用。

BlackBox 发表于 2022-7-6 08:39:20

 
Tharwat,SELECTSIMILAR命令自+/-2006年就出现了;我用它与土地桌面(LDD)2006年。。。诚然,LDD具有Vanilla所没有的功能。
 
其次,您认为缺少垂直或水平选择选项是命令设计中的一个缺陷,而事实上它有更大的用途。。。使用户有义务遵守“良好”的起草实践,在这种情况下,不需要选择此选项(IMHO)。。。相反,我们可以依靠其他层命令来实现他们的目标。
 

cadamrao 发表于 2022-7-6 08:48:44

谢谢你为我花了很多时间;伟大的作品
 
文基
 
 
 

Tharwat 发表于 2022-7-6 08:59:08

 
 
很高兴听到这个消息。
 
不客气。
页: [1]
查看完整版本: 选择相似项