Тема: Блок залитый SOLID

Программно вставляю блок залитый SOLID.
При создании блока Solid ставится на задний план. И в редакторе блоков всё выглядит замечательно - линии на первом плане, SOLID на заднем.
Но при вставке блока заливка вылезает на передний план и из-за неё никаких линий не видно.
Регенерация не помогает.
FILLMODE =1.
И если войти во вставленный блок в "Редактор блоков" то заливка на первом плане.
Как принудительно SOLID поставить назад?

Re: Блок залитый SOLID

Попробовал сделать то же самое и ... прекрасно вставляется блок с заливкой на заднем плане, как ей и назначено. Похоже, что это не проблема программирования.
Кстати, что вы называете - "Редактор блоков", как это будет в английском варианте?

Re: Блок залитый SOLID

BlockEditor
Проблема в порядке создания примитивов.

Re: Блок залитый SOLID

> LeonidSN
Блоки вставляются программно - нормально. Если скопировать этот блок и вставить в новый рисунок или файл открывается на другой машине, то все заливки выползают на первый план.

> Кулик Алексей aka kpblc
Да, если заливка была создана первой, тогда всё хорошо. Но она должна быть ассоциативной(а если она первая, то свойство теряется). А к объектам ещё привязаны динамические операции...
Вот и возник вопрос - При вставке блока в VBA заливку принудительно можно запхнуть на задний план?

Re: Блок залитый SOLID

На лиспе такое проворачивали, но точную ссылку я не помню (работать надо со словарями, а как там дело обстоит в VBA - я не знаю)

Re: Блок залитый SOLID

Спасибо за участие.
Если вспомнишь ссылку - сообщи, пожалуйста. :) Хоть на лиспе-посмотрю.

Re: Блок залитый SOLID

> Adel
К примеру как поменять DrawOrder для выбранных объектов:

Option Explicit
Sub OrderToTop()
' This example creates a SortentsTable object and
' changes the draw order of selected object(s) to top.
     Dim oSset As AcadSelectionSet
     Dim oEnt
     Dim i As Integer
     Dim setName As String
     setName = "$Order$"
     'Make sure selection set does not exist
     For i = 0 To ThisDrawing.SelectionSets.Count - 1
          If ThisDrawing.SelectionSets.Item(i).Name = setName Then
               ThisDrawing.SelectionSets.Item(i).Delete
               Exit For
          End If
     Next i
     Set oSset = ThisDrawing.SelectionSets.Add(setName)
     oSset.SelectOnScreen
     If oSset.Count > 0 Then
          ReDim arrObj(0 To oSset.Count - 1) As AcadObject
          'Process each object
          i = 0
          For Each oEnt In oSset
               Set arrObj(i) = oEnt
               i = i + 1
          Next
     End If
     On Error GoTo Err_Control
     'Gxet an extension dictionary and, if necessary, add a SortentsTable object
     Dim eDictionary As Object
     Set eDictionary = ThisDrawing.ModelSpace.GetExtensionDictionary
     ' Prevent failed GetObject calls from throwing an exception
     On Error Resume Next
     Dim sentityObj As Object
     Set sentityObj = eDictionary.GetObject("ACAD_SORTENTS")
     On Error GoTo 0
     If sentityObj Is Nothing Then
          ' No SortentsTable object, so add one
          Set sentityObj = eDictionary.AddObject("ACAD_SORTENTS", "AcDbSortentsTable")
     End If
     'Move selected object(s) to the top
     sentityObj.MoveToTop arrObj
     Application.Update
     Exit Sub
Err_Control:
     If Err.Number <> 0 Then MsgBox Err.Description
End Sub

Не помню откуда скачал
~'J'~

Re: Блок залитый SOLID

> Adel
Да, если заливка была создана первой, тогда всё хорошо
Вы проверяли, или это умозрительно?
Я так понимаю, что Алексей (> Кулик Алексей aka kpblc (2008-06-18 00:02:08)) подтверждает  предположение о несвязи (да простится мне это уродство...) Display Order с программными методами.
Тогда - как автокадчик автокадчику. Выяснил опытным путем, что иногда недостаточно послать штриховку Send to Back, надо еще остальные объекты Bring to Front.

Re: Блок залитый SOLID

LeonidSN пишет:

Вы проверяли, или это умозрительно?

Да - проверила. Присоединяюсь к  Кулик Алексей aka kpblc (2008-06-18 00:02:08):

Проблема в порядке создания примитивов

Выяснил опытным путем, что иногда недостаточно послать штриховку Send to Back, надо еще остальные объекты Bring to Front.

Я и так пробовала.
И еще при создании штриховки ставится галочка - заливка на задний план. Но и это не учитывается - при повторном вхождении в BlockEditor заливка опять на первом плане. А при входе в редактор штриховок стоит - Настройка-> Порядок рисования->\"Не изменят …  12:25:29)
Спасибо! Поизучаю... Может что и накопаю...