ectech 发表于 2022-7-6 09:52:03

在不同多边形中创建图案填充

尊敬的各位:,
 
我想在不同层的所有多段线上创建图案填充。例如,图层1上的所有多段线将图案填充创建为红色,图层2上的所有多段线将图案填充创建为黄色。。。。是否可以通过lisp自动创建它?
 
谢谢

alanjt 发表于 2022-7-6 09:57:44

当你说“在多段线上图案填充”时,你的意思是在闭合多段线内图案填充吗?

ectech 发表于 2022-7-6 10:04:22

是的,谢谢。闭合多段线内的图案填充

alanjt 发表于 2022-7-6 10:09:26

对闭合多段线进行图案填充并不十分困难。到目前为止,你有什么代码?
 
提示(选择闭合多段线的最佳方法):
(ssget '((0 . "LWPOLYLINE") (-4 . "<OR") (70 . 1) (70 . 129) (-4 . "OR>")))

BearDyugin 发表于 2022-7-6 10:18:19

但是如果
((-1 . <Имя объекта: 7edf4508>) (0 . "LWPOLYLINE") (330 . <Имя объекта:
7ed49cf8>) (5 . "6369") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
(100 . "AcDbPolyline") (90 . 5) (70 . 0) (43 . 0.0) (38 . 0.0) (39 . 0.0)
(10 -1632.64 5446.11) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 -330.423
2953.1) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 3128.59 4700.92) (40 .
0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 402.075 6001.62) (40 . 0.0) (41 . 0.0)
(42 . 0.0) (91 . 0) (10 -1632.64 5446.11) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91
. 0) (210 0.0 0.0 1.0))

alanjt 发表于 2022-7-6 10:20:24

 
没错,但它还没有正式关闭。然而,您可以轻松地修改代码,以确保闭合或(等于起始点端点)。

alanjt 发表于 2022-7-6 10:28:05

啊,见鬼。。。
 
(defun c:Test (/ ss h)
(vl-load-com)
(if (setq ss (ssget '((0 . "LWPOLYLINE") (-4 . "<OR") (70 . 1) (70 . 129) (-4 . "OR>"))))
   ((lambda (space)
      (vlax-for x (setq ss (vla-get-activeselectionset *AcadDoc*))
      (vla-put-layer
          (setq h (vla-AddHatch space acHatchPatternTypePredefined "SOLID" :vlax-true))
          (vla-get-layer x)
      )
      (vlax-invoke h 'AppendOuterLoop (list x))
      (vlax-invoke h 'Evaluate)
      )
      (vla-delete ss)
    )
   (if (or (eq acmodelspace
               (vla-get-activespace
                   (cond (*AcadDoc*)
                         ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
                   )
               )
             )
             (eq :vlax-true (vla-get-mspace *AcadDoc*))
         )
       (vla-get-modelspace *AcadDoc*)
       (vla-get-paperspace *AcadDoc*)
   )
   )
)
(princ)
)

alanjt 发表于 2022-7-6 10:32:05

稍微修改以接受具有相同起点和终点的开放多段线。。。
 
(defun c:Test (/ ss h)
(vl-load-com)
(if (setq ss (ssget '((0 . "LWPOLYLINE"))))
   ((lambda (space)
      (vlax-for x (setq ss (vla-get-activeselectionset *AcadDoc*))
      (if (or (vlax-curve-isClosed x)
                (equal (vlax-curve-getStartPoint x) (vlax-curve-getEndPoint x))
            )
          (progn
            (vla-put-layer
            (setq h (vla-AddHatch space acHatchPatternTypePredefined "SOLID" :vlax-true))
            (vla-get-layer x)
            )
            (vlax-invoke h 'AppendOuterLoop (list x))
            (vlax-invoke h 'Evaluate)
          )
      )
      )
      (vla-delete ss)
    )
   (if (or (eq acmodelspace
               (vla-get-activespace
                   (cond (*AcadDoc*)
                         ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
                   )
               )
             )
             (eq :vlax-true (vla-get-mspace *AcadDoc*))
         )
       (vla-get-modelspace *AcadDoc*)
       (vla-get-paperspace *AcadDoc*)
   )
   )
)
(princ)
)

asos2000 发表于 2022-7-6 10:38:04

有没有办法通过选择内部点来创建图案填充?

Tharwat 发表于 2022-7-6 10:41:39

 
看看这个。
 

(while
(setq pt (getpoint "\n Internal Point :"))
   (command "_.-hatch" pt "_p" "SOLID" "" "")
)

 
塔瓦特
页: [1] 2
查看完整版本: 在不同多边形中创建图案填充