Тема: Как закрасить объект

Пожалуйста помогите разобраться как можно закрасить (залить) объект например круг и объект созданный из   нескольких примитивов????

(изменено: fixo, 21 марта 2011г. 17:42:16)

Re: Как закрасить объект

Дима Сибилев пишет:

Пожалуйста помогите разобраться как можно закрасить (залить) объект например круг и объект созданный из нескольких примитивов????

Подробнее плиз, обекты отдельно или сливаются с кругом?
Лучше бы посмотреть рисунок
А навскидку - используй

ThisDrawing.SendCommand("-hatch.....")

Кароч, типа

Option Explicit

'based on module written by SMEL

Public Sub Hatching(ac As Object)
  Dim oEnt As AcadObject
  Dim delObjs(0) As AcadEntity
  Dim oSset As AcadSelectionSet
  Dim cmdStr As String
  Dim i
                Set oSset = GetSelection
                Set oEnt = oSset.Item(0)
                cmdStr = "_-BHATCH" & vbCr & "S" & vbCr & "(handent " & Chr(34) & oEnt.Handle & Chr(34) & ")" '& vbCr

                For i = 1 To oSset.Count - 1
                Set oEnt = oSset.Item(i)
                    cmdStr = cmdStr & vbCr & "(handent " & Chr(34) & oEnt.Handle & Chr(34) & ")" '& vbCr
                Next
                
                cmdStr = cmdStr & vbCr & vbCr & vbCr
                SendCmdEX ac, cmdStr, True
                
                cmdStr = "(princ)" & vbCr
                SendCmdEX ac, cmdStr, False

End Sub

Public Function GetSelection() As AcadSelectionSet

  On Error Resume Next

     Dim oSset As AcadSelectionSet
          With ThisDrawing.SelectionSets
               While .Count > 0
                    .Item(0).Delete
               Wend
          Set oSset = .Add("$NewOne$")
          End With
          
oSset.SelectOnScreen

Set GetSelection = oSset
Set oSset = Nothing
End Function

Public Sub SendCmdEX(ac As Object, cmd As String, Optional ChOsmode As Boolean = False)
 If ChOsmode Then
  ac.SendCommand cmd
 Else
  Dim osmode As Integer
  osmode = CInt(GetVar(ac, "OSMODE"))
  ac.SendCommand cmd
  SetVar ac, "OSMODE", osmode
 End If
End Sub

Public Sub SetVar(ac As Object, varName As String, varValue)
ac.SetVariable varName, varValue
End Sub

Public Function GetVar(ac As Object, varName As String) As Variant
GetVar = ac.GetVariable(varName)
End Function

Sub Test()
Dim ac As Object
On Error GoTo HoustonWeHaveAProblem
Set ac = ThisDrawing
SetVar ac, "hpname", "ANSI37"
SetVar ac, "hpscale", 5#
SetVar ac, "hpang", 1.5708

Call Hatching(ac)

HoustonWeHaveAProblem:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
End Sub

[FONT=Arial]~'J'~[/FONT]

Re: Как закрасить объект

Извиняюсь что не корректно поставил вопрос. Мне нужно написать в коде что-бы рисовался круг и сразу закрашивался черным цветом

допустим вот рисуется круг

Sub Example_AddCircle()
    ' Этот пример создает круг в пространстве модели.
   
    Dim circleObj As AcadCircle
    Dim centerPoint(0 To 2) As Double
    Dim radius As Double
   
    ' Определите круг
    centerPoint(0) = 0: centerPoint(1) = 0: centerPoint(2) = 0
    radius = 5
   
    ' Создайте объект Circle в пространстве модели
    Set circleObj = ThisDrawing.ModelSpace.AddCircle(centerPoint, radius)
    ZoomAll
   
End Sub

Как дописать что б он при этом закрашивался черным цветом?

(изменено: Anatoly, 23 марта 2011г. 11:59:48)

Re: Как закрасить объект

Sub Example_AddHatch()
    ' This example creates an associative hatch in model space.
   
    Dim hatchObj As AcadHatch
    Dim patternName As String
    Dim PatternType As Long
    Dim bAssociativity As Boolean
    
    ' Define the hatch
    patternName = "SOLID"
    PatternType = acHatchPatternTypePreDefined
    bAssociativity = True
    
    ' Create the associative Hatch object in model space
    Set hatchObj = ThisDrawing.ModelSpace.AddHatch(PatternType, patternName, bAssociativity)
    hatchObj.color = acWhite
    
    ' Create the outer boundary for the hatch (a circle)
    Dim outerLoop(0 To 0) As AcadEntity
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 3: center(1) = 3: center(2) = 0
    radius = 1
    Set outerLoop(0) = ThisDrawing.ModelSpace.AddCircle(center, radius)
    
    ' Append the outerboundary to the hatch object, and display the hatch
    hatchObj.AppendOuterLoop (outerLoop)
    hatchObj.Evaluate
    ThisDrawing.Regen True
End Sub

Re: Как закрасить объект

Большое Вам спасибо!!!!!