ADN Open CIS
Сообщество программистов Autodesk в СНГ

04/09/2013

Использование открытой облегченной полилинии в качестве границы штриховки в VBA

Вопрос:
Как можно использовать открытую облегченную полилинию (LWPOLYLINE) в качестве границы при создании штриховки? Можно ли так же использовать метод AddVertex  для добавления вершин к облегченной полилинии?

Решение:
Следующий код содержит функцию, которая создаёт открытую облегченную полилинию (используя метод AddVertex), хотя начальная и конечная точки совпадают. Эта полилиния затем используется в качестве внешней границы штриховки.

Код - VBA: [Выделить]
  1. Option Base 0
  2. Sub TestLWPline ()      
  3.    'создаём массив для двух точек       
  4.    Dim Pt(0 To 3) As Double       
  5.    Pt(0) = 0#: Pt(1) = 0#: Pt(2) = 0#: Pt(3) = 10#       
  6.    'создаём LWPOLYLINE содержащую две вершины       
  7.    Dim LWpline As Object       
  8.    Set LWpline = ThisDrawing.ModelSpace.AddLightWeightPolyline(Pt)       
  9.    'добавляем дополнительные точки       
  10.    Pt(0) = 10#: Pt(1) = 10#       
  11.    LWpline.AddVertex 2, Pt       
  12.    'Добавим начальную точку к полилинии снова, так чтобы      
  13.    'начальная и конечная точки совпадали, но при этом       
  14.    'свойство Closed оставалось ложным     
  15.    Pt(0) = 0#: Pt(1) = 0#       
  16.    LWpline.AddVertex 3, Pt       
  17.    'Проверим, что действительно свойство Closed ложно       
  18.    Dim bClosed As Boolean       
  19.    bClosed = LWpline.closed       
  20.    'добавим штриховку к пространству модели       
  21.    Dim MyHatch As Object       
  22.    Set MyHatch = ThisDrawing.ModelSpace.AddHatch _
  23.        (acHatchPatternTypePreDefined,"ANSI31", True)      
  24.    'Создадим и добавим внешний контур     
  25.    Dim outerLoop As Variant
  26.    Dim outerLoopArray(0) As Object      
  27.    Set outerLoopArray(0) = LWpline
  28.    outerLoop = outerLoopArray      
  29.    MyHatch.AppendOuterLoop (outerLoop)
  30. End Sub

 

Источник: http://adndevblog.typepad.com/autocad/2012/12/use-an-open-lw-polyline-as-the-boundary-for-a-hatch-in-vba.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=198

Опубликовано 04.09.2013