Как удалить схему из семейства?

Автор Тема: Как удалить схему из семейства?  (Прочитано 13719 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Как удалить схему из семейства?
« Ответ #15 : 24-11-2015, 10:36:34 »
Dim mySchema As Schema = Schema.Lookup(Guid) ругается на schema
schema и Schema  - это разные слова.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Как удалить схему из семейства?
« Ответ #16 : 24-11-2015, 10:47:12 »
Проблема в том, что к нижнему регистру Visual Studio приводит переменную (schema) сама.

Может это как-то связано с самим Revit. У меня Revit 2015. Других переменных с таким именем нет. Только если в другом методе, в котором эта схема создается. И всё.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Как удалить схему из семейства?
« Ответ #17 : 24-11-2015, 10:50:29 »
Visual Studio не приводит сама ничего. Она лишь предлагает подсказки, которыми можно воспользоваться, а можно и не пользоваться.
В данном случае, у вас видимо где то объявлена переменная schema и Visual Studio ее предлагает в подсказках. Но вам же нужна не переменная, а нужно вызвать статический метод EraseSchemaAndAllEntities класса Schema, для этого надо написать название класса, которое начинается с большой буквы.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Как удалить схему из семейства?
« Ответ #18 : 24-11-2015, 10:55:50 »
Прибить меня мало... внутри метода есть объявленная переменная schema, но она должна будет создавать новую схему после удаления... Изменил ее имя и ошибка перестала беспокоить.

Виктор, приношу извинения. Просто код большой и мой взгляд не смог с первого раза определить эту переменную. Я прошу еще раз прощения.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Как удалить схему из семейства?
« Ответ #19 : 24-11-2015, 10:58:44 »
Евгений, просто внимательно читайте ошибки. Они в большинстве случаев содержат достаточно подробное описание, чтобы понять причину.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Как удалить схему из семейства?
« Ответ #20 : 24-11-2015, 11:00:51 »
Евгений, просто внимательно читайте ошибки. Они в большинстве случаев содержат достаточно подробное описание, чтобы понять причину.
Виктор, Вы неимоверно терпеливы. Огромное Вам спасибо! Все сработало!

Подытожу: получается нельзя сделать защиту семейства от плагиата с помощью Extensible Storage!

Итого:

Код - vb.net [Выбрать]
  1. Private guid As Guid = New Guid("01bc2dbd-561b-4779-3a92-dda4f12bdb6d")
  2. ...
  3.     Public Sub UnMake_It(commandData As ExternalCommandData)
  4.         Dim uiDoc As UIDocument = commandData.Application.ActiveUIDocument
  5.         Dim Doc As Document = uiDoc.Document
  6.         Dim tr As New Transaction(Doc, "Extensible Storage")
  7.         ' Находим все семейства выборкой
  8.         Dim coll As FilteredElementCollector = New FilteredElementCollector(Doc).OfClass(GetType(Autodesk.Revit.DB.Family))
  9.         Dim acElFam As Autodesk.Revit.DB.Element = Nothing
  10.         ' Перебираем все семейства в выборке на предмет поиска созданных семейств
  11.         For Each acEl As Autodesk.Revit.DB.Element In coll
  12.             Dim acEl_IsOwnFamily As Family = CType(acEl, Family)
  13.             Select Case acEl_IsOwnFamily.IsOwnerFamily
  14.                 Case True
  15.                     acElFam = acEl
  16.                     tr.Start()
  17.                     Dim mySchema As Schema = Schema.Lookup(guid)
  18.                     acElFam.DeleteEntity(mySchema)
  19.                     tr.Commit()
  20.                     tr.Dispose()
  21.             End Select
  22.             ' Если созданных семейств не найдено, то выходим из процедуры
  23.             If acElFam Is Nothing Then
  24.                 MsgBox("Удалять нечего!")
  25.                 Exit Sub
  26.             End If
  27.         Next
  28.     End Sub

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Как удалить схему из семейства?
« Ответ #21 : 24-11-2015, 11:06:57 »
получается нельзя сделать защиту семейства от плагиата с помощью Extensible Storage?
Полноценную - нет. Частичную - можно.