ziorudy 发表于 2022-7-5 17:48:36

选择相似区域多段线

你好,我是来寻求帮助的。
这是我的问题。我有很多poliline(复杂的custum拼花地板)。我必须选择所有具有相同区域的相同poliline(因此具有相同的形状)!有没有办法用列表例程解决我的问题?有人能帮我做吗?
 
非常感谢你!

pBe 发表于 2022-7-5 17:53:04

欢迎来到CADTutor Ziorudy
 
尺寸相同?

MSasu 发表于 2022-7-5 17:58:23

请检查内置命令QSELECT是否允许根据面积选择多段线图元。

pBe 发表于 2022-7-5 18:02:49

 
这就是我要建议的MSasu,但请求是不明确的,“因此具有相同的形状”,因此我的Q。

MSasu 发表于 2022-7-5 18:08:03

当然,一般来说,相同的面积并不意味着物品也有相同的形状。然而,在特定图纸中,它可以作为标准。
QSELECT也不会适应区域中的小变化。线程标题中的“相似区域”一词可能会让你想到这一点。

ziorudy 发表于 2022-7-5 18:10:32

有些东西不起作用!
 
我选择我的所有多边形,qselect,choose area,等于:我单件的esact面积(123456789)。那么什么都不会发生!:x: x

Lee Mac 发表于 2022-7-5 18:15:12

试试这个快速编写的程序:
 

;; Select Similar Area-Lee Mac
;; Prompts the user to select a source polyline and
;; selects all polylines in the active layout with a similar area.

(defun c:ssarea ( / ent inc sel src )   
   (if
       (and
         (setq src
               (LM:SelectIf "\nSelect Source Polyline: "
                  '(lambda ( x ) (wcmatch (cdr (assoc 0 (entget x))) "*POLYLINE"))
               )
         )
         (setq sel
               (ssget "_X"
                   (list '(0 . "*POLYLINE")
                     (if (= 1 (getvar 'cvport))
                           (cons 410 (getvar 'ctab))
                        '(410 . "Model")
                     )
                   )
               )
         )
         (setq src (vla-get-area (vlax-ename->vla-object src)))
       )
       (repeat (setq inc (sslength sel))
         (setq ent (ssname sel (setq inc (1- inc))))
         (if (not (equal src (vla-get-area (vlax-ename->vla-object ent)) 1e-3))
               (ssdel ent sel)
         )
       )
   )
   (sssetfirst nil sel)
   (princ)
)

;; Select If-Lee Mac
;; Continuously prompts the user for a selection
;; until a given predicate function is validated

(defun LM:SelectIf ( msg prd / e )
   (setq prd (eval prd))
   (while
       (progn (setvar 'ERRNO 0) (setq e (car (entsel msg)))
         (cond
               (   (= 7 (getvar 'ERRNO))
                   (princ "\nMissed, try again.")
               )
               (   (eq 'ENAME (type e))
                   (if (and prd (null (prd e)))
                     (princ "\nInvalid Object.")
                   )
               )
         )
       )
   )
   e
)

(vl-load-com) (princ)

 
上述程序认为多段线面积等于1e-3(0.001)的公差-更改此公差以适合您的应用。

ziorudy 发表于 2022-7-5 18:22:39

谢谢你!谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!你救了我一小时又一小时的愚蠢工作!

pBe 发表于 2022-7-5 18:23:46

所以这不是形状而是面积。我现在明白了。

Lee Mac 发表于 2022-7-5 18:27:23

 
不客气。
 
 
根据我对OP要求的理解,他们希望选择形状相似的所有对象,并使用面积属性,因为两个不同形状具有相同面积的概率可能非常低。
页: [1] 2
查看完整版本: 选择相似区域多段线