jdiala 发表于 2022-7-5 23:34:14

 
试试这个:
 
(defun C:test (/ vc scs hv wh i l nss ss tssi)
;;; JDiala 10-23-13 ;;;
;;;; Cadtutor.net ;;;;;
(setq vc (getvar 'viewctr)
      scs (getvar 'screensize)
      hv (/ (getvar 'viewsize) 2.)
      wh (* hv (/ (car scs) (cadr scs)))
      l   nil
      nss (ssadd)
)
(mapcar
   (function
   (lambda (x)
       (repeat
         (setq i
         (sslength
             (setq tss
               (ssget "_W"
               (list (- (car vc) wh) (- (cadr vc) hv) 0.0)
               (list (+ (car vc) wh) (+ (cadr vc) hv) 0.0)
               (list (cons 0 (if (= (car x) "INSERT") "INSERT" (car x)))
                   (if (= (car x) "INSERT")
                     (cons 2 (cadr x))
                     (cons 8 (cadr x))
                   )
               )
               )
             )
         )
         )
         (ssadd (ssname tss (setq i (1- i))) nss)
       )
   )
   )
(progn
   (setq ss (ssget ))
   (repeat (setq i (sslength ss))
   (setq i (1- i)
         e (ssname ss i))
   (cond
       ( (= l nil)
         (if (= "INSERT" (cdr (assoc 0 (entget e))))
             (setq l (cons (list "INSERT" (cdr (assoc 2 (entget e)))) l))
             (setq l (cons (list (cdr (assoc 0 (entget e))) (cdr (assoc 8 (entget e)))) l ))
         )
       )
       ( (not
         (member
             (if (= "INSERT" (cdr (assoc 0 (entget e))))
               (list "INSERT" (cdr (assoc 2 (entget e))))
               (list (cdr (assoc 0 (entget e))) (cdr (assoc 8 (entget e))))
             ) l
         )
         )
         (if (= "INSERT" (cdr (assoc 0 (entget e))))
             (setq l (cons (list "INSERT" (cdr (assoc 2 (entget e)))) l))
             (setq l (cons (list (cdr (assoc 0 (entget e))) (cdr (assoc 8 (entget e)))) l ))
         )
       )
       (t (setq l l))
   )
   )
)
)
(command "_.isolateobjects" nss "")
)

3dwannab 发表于 2022-7-5 23:38:08

好吧,这很奇怪。我再次测试了那段旧代码,它仍然有效。对不起,我很痛苦。我不知道我哪里出错了。我更改了:
为了满足我的需要:
非常感谢你。在我看来,这比内置功能要好。通过这种方式,您可以最大化并执行此操作,或者在特定区域中工作,而无需取消选择超出需要的内容。
 
荣誉。

wimal 发表于 2022-7-5 23:38:15

非常感谢pselect正在工作。

3dwannab 发表于 2022-7-5 23:41:45

你应该感谢的是jdiala

wimal 发表于 2022-7-5 23:45:49

jdiala先生的上述代码与cad 2006完美结合。
请你解释一下下面代码部分的功能好吗
8

marko_ribar 发表于 2022-7-5 23:48:41

我认为这是打字错误,如果有人问我,我会将“_C”改为“_W”,并对结果感到满意。。。

wimal 发表于 2022-7-5 23:51:25

甚至没有C或W代码是正确的。但我需要理解代码的功能。我的意思是它如何过滤正确的
窗口内的对象minv和maxv
请解释一些LISP专家。

jdiala 发表于 2022-7-5 23:55:46

 
注意:我不是lisp专家。
我使用了图形的最大范围,即extmin和extmax变量。由于选项“_C”将仅选择屏幕上可见的内容,因此我选择的2个点是否在屏幕之外并不重要。
 
要获得完整的解释,请阅读此。。。
来自lisp专家Lee Mac

Lee Mac 发表于 2022-7-5 23:58:58

谢谢你的夸奖,尽管我也在向别人学习
 
下面是编写程序的另一种方法:
注:上述内容与动态块参考不兼容。

jdiala 发表于 2022-7-6 00:01:57

李代码不错。你负责UCS和ctab,这是我没有考虑的。再次从你身上吸取教训。非常感谢。
页: 1 [2]
查看完整版本: 选择类似于v的内容