ronjonp 发表于 2022-7-5 14:59:00

好主意BIGAL。。现在你需要考虑岛屿。

ronjonp 发表于 2022-7-5 15:02:32

这里使用分解的网络图案填充(线)和其他非线对象快速尝试一下。不确定速度,但适用于岛屿。
 
绝对没有那么快:
 
几处调整

BIGAL 发表于 2022-7-5 15:06:00

也许我们做错了,如果放大,需要查看圆形的填充图案,或者实际上不是圆形而是面。我会调查的。

rlx 发表于 2022-7-5 15:08:07

 
 
填充图案是否会在边界处留下部分圆?但是如果可以的话。。。

MastroLube 发表于 2022-7-5 15:11:47

哇,伙计们!!!!!
你在这里做得很好!!!
 
 
如果你愿意的话,我会对此深入一点,以便对这个问题有一个全面的了解
 
 
这些构件不能放置在任何地方,只能放置在不超过地板抗剪强度的区域。
这些区域可以在示例中看到,并且位于绿线之外。在带有灰色图案填充的青色中,您可以看到板的支撑,并且在它们上面,您不能明显地放置它们。我的代码只是通过创建图案填充来考虑它(有时会失败)。也许可以创建图案填充并将其边界用作多段线,而不是选择它?
 
无论如何,它比我的快50倍

BIGAL 发表于 2022-7-5 15:12:31

我认为这可能需要额外的几个步骤。Bpoly将在一个封闭区域内制作每个形状的柱脚,因此它会将球放置在随机形状中的每个位置,包括我将其作为限制的弯曲绿线,而不是蓝色矩形,然后第二步将选择大多边形内的所有绿色摆动,并重复球修剪。这是我想要的还是我理解不正确。

MastroLube 发表于 2022-7-5 15:18:49

你好,比格尔!
 
 
谢谢你的解释。听起来很酷,Bpoly的额外步骤可以做到这一点!
 
 
不幸的是,绿线不是多段线,通常位于外部参照上。这就是我的fem(AxisVM)的结果。
 
 
无论如何,是的,这正是我梦想的
 
 
谢谢你的帮助比格尔

ronjonp 发表于 2022-7-5 15:19:19

 
你能把那张图贴出来吗?

MastroLube 发表于 2022-7-5 15:24:46

当然!
 
 
文本cad导师-标准。拉链

ronjonp 发表于 2022-7-5 15:26:37

以下是我到目前为止所掌握的。。也许你可以根据自己的需要调整它。
(defun c:foo (/ _dxf a e el l1 l2 l3 p1 p2 q r s x y)
;; Not very fast ( 25 seconds ) with example because of the 3500 lines for "DIAG_FORZE_SUPERF"
;; Needs a grid of lines on 'hatch' layer and other objects to check proximity to
(defun _dxf (c e) (cdr (assoc c (entget e))))
;; Circle radius
(setq r 0.1575)
(cond
   ;; A selection
   ((and (setq s (ssget '((0 . "*polyline,line,circle,ellipse"))))
(setq s (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))))
    )
    ;; (idt_starttimer)
    (foreach x        s
      (setq el (entget x))
      (if (and (= "LINE" (_dxf 0 x)) (= "HATCH" (strcase (_dxf 8 x))))
(progn        (setq q (angle (setq p1 (cdr (assoc 10 el))) (setq p2 (cdr (assoc 11 el)))))
        (or a (setq a (rem (angle (cdr (assoc 10 el)) (cdr (assoc 11 el))) pi)))
        (if (equal (rem q pi) a 1e-
          (setq l1 (cons (list p1 p2) l1))
          (setq l2 (cons (list p1 p2) l2))
        )
)
(setq l3 (cons x l3))
      )
    )
    (and
      l1
      l2
      l3
      (foreach        y l1
(foreach z (vl-remove 'nil
                     (mapcar '(lambda (x) (inters (car x) (cadr x) (car y) (cadr y))) l2)
          )
   (setq e (entmakex (list '(0 . "circle") '(8 . "void") (cons 10 z) (cons 40 r))))
   (and        (vl-some '(lambda (x) (< (distance z (vlax-curve-getclosestpointto x z)) r)) l3)
        (entdel e)
   )
)
      )
    )
    ;; (idt_endtimer)
   )
)
(princ)
)
(vl-load-com)
页: 1 [2]
查看完整版本: 在多段线内插入圆