ollie 发表于 2022-7-6 15:13:12

将实体压缩为块

大家好
 
假设您有4个实体,分别命名为ent(1-4)ent 1、ent 2和ent 3。Ent 4触摸Ent 2和3。
 
有谁能提出一种方法,将这些转化为一个选择集et,而不选择其中的多个。最终,图形中会有多组实体
 
可悲的是,这台计算机上没有autocad,所以我求助于mspaint进行了一个糟糕的快速修复
 
谢谢
奥利

jammie 发表于 2022-7-6 15:31:08

你好奥利,
 
如果安装了Express Tools,请尝试快速选择例程
 
从菜单中
 
快速>>选择工具>>快速选择
 
或FS型
 
素描很好!
 
当做
 
杰米

Lee Mac 发表于 2022-7-6 15:34:05

虽然如果您想在LISP中使用Jammie的解决方案可能会有问题,但Express工具在LISP中很难操作。。。

ollie 发表于 2022-7-6 15:45:35

 
谢谢,这是一个令人难以置信的方便工具,不幸的是,它并没有帮助我这个感谢虽然。
 
到目前为止,这与预期的最终结果不同的是,用户在开始时选择一个实体,而不是在窗口层上找到第一条非块的2点线。此外,添加到列表中还有几个警报。最终,如果满足这些条件,则当前实体将添加到包含第一个实体的连接实体的选择集。
 
(Defun C:test()

;Cleaning your variables
(setq temp_ent_dxfgroup nil)

;Load vlax support
(vl-load-com)

;Begin scriptiong
(Setq window_id_cntr 0)
(setq ent_test(car(entsel)))
(setq ent_test(vlax-ename->vla-object ent_test))
(setq ent_orientation (vlax-get-property ent_test 'angle))
(setq ent_length (vlax-get-property ent_test 'length))
(Setq ent_orientation(angtos ent_orientation 0))      ;Angle in degrees of first object
(setq ent_orientation(atoi ent_orientation))
(setq ent_start (vlax-curve-getStartPoint ent_test))      ;Get object startpoint
(if(or (= ent_orientation 0) (= ent_orientation 180))      ;Get orientation of the line horizontal or vertical
   (progn
         (setqalignment "x")                  ;Use this to determine which axis to set range scope
       (setq static_val (cadr ent_start))
         (setq start_val (car ent_start))
         (if (= ent_orientation 0)
         (progn
             (setq param1 start_val)
                        (setq param2 (+ start_val ent_length))
             )
       )
       (if (= ent_orientation 180)
         (progn
             (setq param1 start_val)
                        (setq param2 (+ start_val ent_length))
             )
       )
   )
)
(if(or (= ent_orientation 90) (= ent_orientation 270))
    (progn
         (setqalignment "y")
         (setq static_val (car ent_start))
         (setq start_val (cadr ent_start))
          (if (= ent_orientation 90)
             (progn
             (setq param1 start_val)
                        (setq param2 (+ start_val ent_length))
             )
         
       )
       (if (= ent_orientation 270)
             (progn
             (setq param1 start_val)
                        (setq param2 (+ start_val ent_length))
             )
       )
   )                              ; the first parameters have been derived now loop through
)                                    ; each of the remaining entites
; first entity parameters defined create selection set and check points against definitions
(Setq sset_ent (ssget "X"
         '(
             (-4 . "<OR")
             (-4 . "<AND")
             (8 . "Windows")
             (-4 . "AND>")
             (-4 . "<NOT")
             (0 . "INSERT")
             (-4 . "NOT>")
             (-4 . "OR>")
            )
            )
)
(setq cntr 0)
(while (< cntr (sslength sset_ent))
      (setq temp_ent(ssname sset_ent cntr))
    (setq temp_ent_dxfgroup(entget temp_ent))
    (foreach ctemp_ent_dxfgroup
         (if (= 10 (car c))
                   (setq p_list
               (append p_list
               (list
                  (cdr c)
                     )
                )
            )
          )
      )
      (foreach c p_list
       (Setq x_point (car c))
         (Setq y_point(cadr c))
         (if (= alignment "x")
             (progn
               (if (= y_point static_val)
                        (progn
                     (if (and (>= x_point param1)(<= x_point param2))
                            (alert "WORKING UPTO AND HERE")
                     )
                  )
               )
         )
       )
         (if (= alignment "y")
             (progn
               (if (= x_point static_val)
                        (progn
                     (if (and (>= y_point param1)(<= y_point param2))
                            (alert "WORKING UPTO HERE")
                     )
                  )
               )
         )
       )
   )
   (Setq cntr (+ cntr 1))      ;exit while loop
)

)

Lee Mac 发表于 2022-7-6 15:59:06

 
可悲的是,并不是每一幅画都是我自己画的。用于绘制窗口的其他一些方法包括重叠线和矩形。

ollie 发表于 2022-7-6 16:12:59

 
啊,不用担心,我只是想把这个想法说出来

Lee Mac 发表于 2022-7-6 16:14:28

页: [1]
查看完整版本: 将实体压缩为块