Как переименовать параметр в семействе?

Автор Тема: Как переименовать параметр в семействе?  (Прочитано 11949 раз)

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

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Пытаюсь переименовать имя параметра с помощью транзакции.
Revit при отладке с запуском приложения фаталит на строке transaction.start(), а при запуске без запуска приложения высвечивается сообщение:

Autodesk.Revit.Exceptions.InvalidOperationException: Starting a transaction from an external application running outside of API context is not allowed.

Задаюсь вопросом: как выполнить транзакцию правильно?



Код - vb.net [Выбрать]
  1.         Dim acFamParams As Object = Doc.FamilyManager.GetParameters
  2.  
  3.         Dim acSingleParam As FamilyParameter = CType(acFamParams(0), DB.FamilyParameter)
  4.  
  5.         Dim tr As New Transaction(Doc,"rename par")
  6.  
  7.         tr.Start() ' здесь фатал
  8.  
  9.         Doc.FamilyManager.RenameParameter(acSingleParam, "wm")
  10.  
  11.         tr.Commit()
  12.  
  13.         tr.Dispose()
  14.  

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
как выполнить транзакцию правильно?
Выполнить ее в правильном контексте Revit. Сдается мне что вы продолжаете работать с немодальной формой, хотя я предупреждал в предыдущей теме, что нужно с модальной работать.

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Сдается мне что вы продолжаете работать с немодальной формой, хотя я предупреждал в предыдущей теме, что нужно с модальной работать.

Нужно попробовать сделать ее свойство TOPMOST=False наверное?!

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
TopMost = False не помог!

Оффлайн shss

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
TopMost = False не помог!
TopMost и не помог бы, потому как это всего лишь отборажение поверх всех окон.
Цитировать
TopMost is a property that is used to make sure one window is always shown above all others within an application. Microsofts example was a find and replace tool.
Эта ошибка из-за неверного обращения к процессу.
Как и выше писал, Виктор, Вам необходимо сделать модальное окно (если оно у Вас не модальное) или выполнять все операции в одном процессе.

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Нужно попробовать сделать ее свойство TOPMOST=False наверное?!
Вместо Form.Show нужно Form.ShowDialog испольщовать

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Вместо Form.Show нужно Form.ShowDialog испольщовать

Попробовал - без изменений, за исключением сообщения

Cannot modify the document for either a read-only external command is being executed, or changes to the document are temporarily disabled.

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Ну если совершенно другая ошибка - это "без изменений", то я даж не знаю что сказать))

Судя по ошибке, внешняя команда помечена атрибутом read-only, в которой нельзя делать изменения в модели.
Полный код класса, реализующего интерфейс IExternalCommand кидайте сюда.

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Полный код класса, реализующего интерфейс IExternalCommand кидайте сюда.

Через него работает! Но мне бы как-нибудь именно через модальную форму это сделать надо или как-то с'имитировать нажатие кнопки, которая бы выполняла данный метод.

Кстати, а с'имитировать нажатие кнопки на ленте можно?

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Не пойму что имеется ввиду под "имитацией". Есть кнопка, при ее нажатии вызывается событие, по которому и выполняется нужное действие/код. Не важно где она, на ленте или на форме. Хотя реализация события конечно разная для ленты и формы.

Через него работает!
Выкладывайте код и команды и формы. Ошибка где-то в коде.

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Выкладывайте код и команды и формы. Ошибка где-то в коде.

Код формы:

Код - vb.net [Выбрать]
  1. Imports Autodesk.Revit
  2. Imports Autodesk.Revit.UI
  3. Imports Autodesk.Revit.DB
  4. Imports System
  5. Imports System.Windows.Forms
  6. Imports System.Text
  7.  
  8.  
  9. Public Class Form1
  10.  
  11.     Private myCD As ExternalCommandData
  12.  
  13.     Public Sub New(ByVal commandData As ExternalCommandData)
  14.         MyBase.New()
  15.         InitializeComponent()
  16.         myCD = commandData
  17.     End Sub
  18.  
  19.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  20.         ' Что сюда вставить, чтобы отобразить версию revit-а?
  21.         Dim App As Autodesk.Revit.UI.UIApplication = myCD.Application
  22.         MsgBox(App.Application.VersionNumber)
  23.     End Sub
  24.  
  25.     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  26.         Dim App As Autodesk.Revit.UI.UIApplication = myCD.Application
  27.         Dim Doc As UIDocument = App.ActiveUIDocument
  28.         MsgBox(Doc.Document.PathName)
  29.     End Sub
  30.  
  31.     Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
  32.         Dim App As Autodesk.Revit.UI.UIApplication = myCD.Application
  33.         Dim Doc As UIDocument = App.ActiveUIDocument
  34.         ListAllElements()
  35.     End Sub
  36.  
  37.     Sub ListAllElements()
  38.         Dim App As Autodesk.Revit.UI.UIApplication = myCD.Application
  39.         Dim Doc As UIDocument = App.ActiveUIDocument
  40.  
  41.         Dim collector As FilteredElementCollector = New FilteredElementCollector(Doc.Document).OfClass(GetType(Family))
  42.  
  43.         'Dim collector As FilteredElementCollector = New FilteredElementCollector(Doc.Document).WhereElementIsNotElementType
  44.  
  45.         ' или Dim collector As FilteredElementCollector = New FilteredElementCollector(Doc.Document).OfClass(GetType(Family))
  46.         'Dim collector_2 As FilteredElementCollector = New FilteredElementCollector(Doc.Document).WhereElementIsNotElementType
  47.         'collector.UnionWith(collector2) ' лишь бы не потерять кусок этого важного кода
  48.  
  49.         Me.ListView1.Clear()
  50.         Me.ListView1.Columns.Add("№")               '0
  51.         Me.ListView1.Columns.Add("ID")              '1
  52.         Me.ListView1.Columns.Add("Class")           '2
  53.         Me.ListView1.Columns.Add("Category")        '3
  54.         Me.ListView1.Columns.Add("Name")            '4
  55.  
  56.         Dim s As String
  57.         Dim e As Element
  58.         Dim num As Long = 1
  59.  
  60.         For Each e In collector
  61.  
  62.             Call GetElementParameterInformation(Doc.Document, e)
  63.  
  64.             Dim LVI As New ListViewItem
  65.             With LVI
  66.                 For i As Long = 0 To 4
  67.                     .SubItems.Add("")
  68.                 Next
  69.             End With
  70.  
  71.             s = String.Empty
  72.             If Not Nothing Is e.Category Then
  73.                 s = e.Category.Name
  74.             End If
  75.             If 0 = s.Length AndAlso TypeOf e Is Family AndAlso Not Nothing Is DirectCast(e, Family).FamilyCategory Then
  76.                 s = DirectCast(e, Family).FamilyCategory.Name
  77.             End If
  78.             If 0 = s.Length Then
  79.                 s = "?"
  80.             End If
  81.  
  82.             LVI.SubItems(0).Text = num
  83.             LVI.SubItems(1).Text = e.Id.IntegerValue.ToString
  84.             LVI.SubItems(2).Text = e.GetType.Name
  85.             LVI.SubItems(3).Text = s
  86.             LVI.SubItems(4).Text = e.Name
  87.  
  88.             If LVI.SubItems(2).Text = "Family" Then
  89.                 Me.ListView1.Items.Add(LVI)
  90.                 num += 1
  91.                 'ElseIf LVI.SubItems(2).Text = "Element" Then
  92.                 '    Me.ListView1.Items.Add(LVI)
  93.                 '    num += 1
  94.             End If
  95.         Next
  96.  
  97.         For i As Integer = 0 To Me.ListView1.Columns.Count - 1
  98.             Me.ListView1.Columns(i).AutoResize(Windows.Forms.ColumnHeaderAutoResizeStyle.ColumnContent)
  99.         Next i
  100.  
  101.     End Sub
  102.  
  103.  
  104.     Public Sub GetElementParameterInformation(document As Document, element As Element)
  105.         Dim prompt As String = "Show parameters in selected Element:"
  106.  
  107.         'Dim st As New StringBuilder()
  108.  
  109.         Dim st As String = ""
  110.  
  111.         For Each para As Parameter In element.Parameters
  112.             st = st & para.Definition.Name & " - " & para.HasValue & " - " & para.AsValueString & vbCrLf
  113.         Next
  114.  
  115.         'MsgBox(st)
  116.  
  117.  
  118.         'TaskDialog.Show("Revit", st)
  119.     End Sub
  120.  
  121.     Public Shared Function ParameterToString(ByVal param As Parameter) As String
  122.  
  123.         Dim val As String = "none"
  124.  
  125.         If param Is Nothing Then
  126.             Return val
  127.         End If
  128.  
  129.         Select Case param.StorageType
  130.             Case StorageType.Double
  131.                 Dim dVal As Double = param.AsDouble
  132.                 val = dVal.ToString & " - " & param.AsValueString
  133.  
  134.             Case StorageType.Integer
  135.                 Dim iVal As Integer = param.AsInteger
  136.                 val = iVal.ToString() & " - " & param.AsValueString
  137.  
  138.             Case StorageType.String
  139.                 Dim sVal As String = param.AsString
  140.                 val = sVal & " - " & param.AsValueString
  141.  
  142.             Case StorageType.ElementId
  143.                 Dim idVal As ElementId = param.AsElementId
  144.                 val = idVal.IntegerValue.ToString & " - " & param.AsValueString
  145.  
  146.             Case StorageType.None
  147.             Case Else
  148.  
  149.         End Select
  150.  
  151.         Return val
  152.  
  153.     End Function
  154.  
  155.     Public Sub Add_New_Element_ListView2(ByVal element1 As String, ByVal element2 As String, ByVal element3 As String, ByVal element4 As String)
  156.         Dim acElNewLVI As New ListViewItem
  157.         With acElNewLVI
  158.             For i As Long = 0 To 3
  159.                 .SubItems.Add("")
  160.             Next
  161.             .SubItems(0).Text = element1
  162.             .SubItems(1).Text = element2
  163.             .SubItems(2).Text = element3
  164.             .SubItems(3).Text = element4
  165.         End With
  166.  
  167.         Me.ListView2.Items.Add(acElNewLVI)
  168.  
  169.     End Sub
  170.  
  171.  
  172.  
  173.  
  174.     Public Sub Show_Parameters_Of_Element_By_Id(ByVal Id As String, Optional ByVal AsSecondaryVariant As Boolean = True)
  175.         Dim uiApp As Autodesk.Revit.UI.UIApplication = myCD.Application
  176.         Dim App As Autodesk.Revit.ApplicationServices.Application = uiApp.Application
  177.         Dim uiDoc As UIDocument = uiApp.ActiveUIDocument
  178.         Dim Doc As Document = uiDoc.Document
  179.  
  180.         Dim coll As FilteredElementCollector = New FilteredElementCollector(Doc).OfClass(GetType(DB.Family))
  181.  
  182.         Me.ListView2.Clear()
  183.         Me.ListView2.Columns.Add("№")                       '0
  184.         Me.ListView2.Columns.Add("Designation")             '1
  185.         Me.ListView2.Columns.Add("Value")                   '2
  186.         Me.ListView2.Columns.Add("Additional value")        '3
  187.  
  188.         Dim acElNum As Integer = 1
  189.  
  190.         For Each acEl As DB.Element In coll
  191.  
  192.             Dim acElId As Integer = acEl.Id.IntegerValue
  193.  
  194.             Select Case acElId
  195.                 Case Id
  196.                     Dim acElFam As DB.Family = CType(acEl, DB.Family)
  197.  
  198.                     Add_New_Element_ListView2(CType(acElNum, String), _
  199.                     "Местоположение семейства", IIf(acElFam.IsInPlace, "Местный", "Загруженный"), "Family.IsInPlace") : acElNum += 1
  200.  
  201.                     Add_New_Element_ListView2(CType(acElNum, String), _
  202.                     "Имя семейства", acEl.Name.ToString, "Family.Name") : acElNum += 1
  203.  
  204.                     Add_New_Element_ListView2(CType(acElNum, String), _
  205.                     "Семейство рукотворное", IIf(acElFam.IsOwnerFamily, "Да", "Нет"), "Family.IsOwnerFamily") : acElNum += 1
  206.  
  207.                     Add_New_Element_ListView2(CType(acElNum, String), _
  208.                     "ID", acEl.Id.IntegerValue.ToString, "Family.Id.IntegerValue.ToString") : acElNum += 1
  209.  
  210.                     Add_New_Element_ListView2(CType(acElNum, String), _
  211.                     "GUID", acEl.UniqueId.ToString, "Family.UniqueId.ToString") : acElNum += 1
  212.  
  213.                     Add_New_Element_ListView2(CType(acElNum, String), _
  214.                     "Тип элемента", acEl.GetType.Name.ToString, "Family.GetType.Name.ToString") : acElNum += 1
  215.  
  216.                     Dim s As String = String.Empty
  217.                     If Not Nothing Is acEl.Category Then
  218.                         s = acEl.Category.Name
  219.                     End If
  220.                     If 0 = s.Length AndAlso TypeOf acEl Is Family AndAlso Not Nothing Is DirectCast(acEl, Family).FamilyCategory Then
  221.                         s = DirectCast(acEl, Family).FamilyCategory.Name
  222.                     End If
  223.                     If 0 = s.Length Then
  224.                         s = "?"
  225.                     End If
  226.  
  227.                     Add_New_Element_ListView2(CType(acElNum, String), _
  228.                     "Имя категории", s, "Family.Category.Name") : acElNum += 1
  229.  
  230.                     If TypeOf acEl Is Wall Then
  231.                         s = "Wall (Стена)"
  232.                     ElseIf TypeOf acEl Is Floor Then
  233.                         s = "Floor (Пол)"
  234.                     ElseIf TypeOf acEl Is RoofBase Then
  235.                         s = "Roof (Крыша)"
  236.                     ElseIf TypeOf acEl Is FamilyInstance Then
  237.  
  238.                         If acEl.Category.Id.IntegerValue = _
  239.                             BuiltInCategory.OST_Doors Then
  240.                             s = "Door (Дверь)"
  241.                         ElseIf acEl.Category.Id.IntegerValue = _
  242.                             BuiltInCategory.OST_Windows Then
  243.                             s = "Window (Окно)"
  244.                         ElseIf acEl.Category.Id.IntegerValue = _
  245.                             BuiltInCategory.OST_Furniture Then
  246.                             s = "Furniture (Фурнитура)"
  247.                         Else
  248.                             s = "Component family instance (Компонент экземпляра семейства)"  ' e.g. Plant
  249.                         End If
  250.  
  251.                     ElseIf TypeOf acEl Is HostObject Then
  252.                         s = "System family instance (Системный экземпляр семейства)"
  253.                     Else
  254.                         s = "Другой"
  255.                     End If
  256.                     Add_New_Element_ListView2(CType(acElNum, String), _
  257.                     "Тип семейства", s, "TypeOf Family Is ...") : acElNum += 1
  258.  
  259.  
  260.                     ' Параметры семейства
  261.                     Dim params As ParameterSet = acEl.Parameters
  262.                     Dim nump As Integer = 1
  263.  
  264.                     For Each param As DB.Parameter In params
  265.                         Dim name As String = param.Definition.Name
  266.                         Dim val As String = ParameterToString(param)
  267.                         Add_New_Element_ListView2(CType(acElNum, String), _
  268.                         "Параметр #" & nump & " [" & name & "]", val, "Family.Definition.Name / ParamToString[Parameter]") : acElNum += 1
  269.                         nump += 1
  270.                     Next
  271.  
  272.                     Dim acPars As Object = acEl.GetOrderedParameters
  273.  
  274.                     For j As Integer = 0 To acPars.count - 1
  275.  
  276.                         Dim acParsVal As DB.Parameter = CType(acPars(j), DB.Parameter)
  277.  
  278.                         Add_New_Element_ListView2(CType(acElNum, String), _
  279.                         "Параметр #" & nump & " map #" & j + 1 & " [" & acPars(j).Definition.Name & "]", ParameterToString(acParsVal), "Family.Parameter.Definition.Name / ParamToString[Parameter]") : acElNum += 1
  280.                         nump += 1
  281.                     Next
  282.  
  283.  
  284.                 Case Else
  285.  
  286.             End Select
  287.         Next
  288.  
  289.         For i As Integer = 0 To Me.ListView2.Columns.Count - 1
  290.             Me.ListView2.Columns(i).AutoResize(Windows.Forms.ColumnHeaderAutoResizeStyle.ColumnContent)
  291.         Next i
  292.  
  293.         ' ПРОБЛЕМА ЗДЕСЬ
  294.         Dim acFamParams As Object = Doc.FamilyManager.GetParameters
  295.         Dim acSingleParam As FamilyParameter = CType(acFamParams(0), DB.FamilyParameter)
  296.         Dim acSP_ed As DB.Definition = acSingleParam.Definition
  297.         MsgBox(acFamParams(0).Definition.Visible & vbCr & acFamParams(0).Definition.Name)
  298.         MsgBox(Doc.FamilyManager.Parameter("Water Mark").Definition.Name)
  299.         Using tr As New Transaction(Doc)
  300.             tr.Start("add par")
  301.             Doc.FamilyManager.RenameParameter(acSingleParam, "wm")
  302.             tr.Commit()
  303.             tr.Dispose()
  304.         End Using
  305.         MsgBox(Doc.FamilyManager.Parameter("wm").Definition.Name)
  306.  
  307.     End Sub
  308.  
  309.     Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
  310.         Process.Start(Environ("TEMP") & "\ref.txt")
  311.     End Sub
  312.  
  313.     Private Sub ListView1_DoubleClick1(sender As Object, e As EventArgs) Handles ListView1.DoubleClick
  314.         Dim LVI As ListViewItem
  315.         LVI = ListView1.FocusedItem
  316.         Call Show_Parameters_Of_Element_By_Id(LVI.SubItems(1).Text, False)
  317.     End Sub
  318.  
  319. End Class
  320.  


А вот если взять код команды, то все работает:

Код - vb.net [Выбрать]
  1. Imports System
  2. Imports System.Windows.Media.Imaging
  3. Imports Autodesk.Revit.DB
  4. Imports Autodesk.Revit.UI
  5. Imports Autodesk.Revit.ApplicationServices
  6. Imports Autodesk.Revit.Attributes
  7. Imports Autodesk.Revit.UI.Selection
  8. Imports System.IO
  9. Imports Autodesk.Revit.UI.Events
  10.  
  11. <Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)> _
  12. Public Class Add_Parameters
  13.  
  14.     Implements Autodesk.Revit.UI.IExternalCommand
  15.  
  16.     Public Function Execute(ByVal commandData As Autodesk.Revit.UI.ExternalCommandData, _
  17.             ByRef message As String, ByVal elements As Autodesk.Revit.DB.ElementSet) _
  18.             As Autodesk.Revit.UI.Result Implements Autodesk.Revit.UI.IExternalCommand.Execute
  19.  
  20.         Dim uiApp As Autodesk.Revit.UI.UIApplication = commandData.Application
  21.         Dim uiDoc As UIDocument = uiApp.ActiveUIDocument
  22.         Dim Doc As Document = uiDoc.Document
  23.  
  24.  
  25.         Dim acFamParams As Object = Doc.FamilyManager.GetParameters
  26.  
  27.         For k = 0 To acFamParams.Count - 1
  28.             Dim rParam As FamilyParameter = CType(acFamParams(k), Autodesk.Revit.DB.FamilyParameter)
  29.  
  30.             Select Case rParam.Definition.Name
  31.                 Case "Water Mark"
  32.                     Using tr As New Transaction(Doc)
  33.                         tr.Start("add par")
  34.                         Doc.FamilyManager.RenameParameter(rParam, "Water Mark Changed")
  35.                         Doc.FamilyManager.SetFormula(rParam, Nothing)
  36.  
  37.                         Doc.FamilyManager.MakeNonReporting(rParam)
  38.  
  39.  
  40.                         Doc.FamilyManager.SetDescription(rParam, "®" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & "www.gallurgy.ru")
  41.                         'Doc.FamilyManager.SetParameterLocked(rParam, True)
  42.  
  43.                         Try
  44.                             Doc.FamilyManager.AddParameter("leto", BuiltInParameterGroup.INVALID, ParameterType.Text, True)
  45.  
  46.                         Catch ex As Exception
  47.                             MsgBox(ex.Message)
  48.                         End Try
  49.  
  50.  
  51.  
  52.  
  53.                         Try
  54.                             Dim rCollector As FilteredElementCollector = New FilteredElementCollector(Doc).OfClass(GetType(Autodesk.Revit.DB.Family))
  55.  
  56.                             For Each rFamily As Autodesk.Revit.DB.Family In rCollector
  57.                                 If rFamily.IsOwnerFamily Then
  58.                                     MsgBox(rFamily.Name)
  59.  
  60.                                     Dim rEntity As New Autodesk.Revit.DB.ExtensibleStorage.Entity
  61.  
  62.                                     rEntity.Set(ScheduleFieldType.ProjectInfo, "my")
  63.  
  64.                                     ' Как создать Entity
  65.                                     'rFamily.SetEntity()
  66.  
  67.                                     Dim rParList As Autodesk.Revit.DB.ParameterSet = rFamily.Parameters
  68.                                     For Each rParListParam As Autodesk.Revit.DB.Parameter In rParList
  69.                                         MsgBox(rParListParam.Definition.Name)
  70.                                     Next
  71.  
  72.                                 End If
  73.  
  74.                             Next
  75.                         Catch ex As Exception
  76.                             MsgBox(ex.Message)
  77.                         End Try
  78.  
  79.  
  80.  
  81.  
  82.                         tr.Commit()
  83.                         tr.Dispose()
  84.                     End Using
  85.             End Select
  86.  
  87.         Next
  88.  
  89.         Return Autodesk.Revit.UI.Result.Succeeded
  90.     End Function
  91.  
  92. End Class
  93.  
  94.  


В коде есть мусор, но прошу не обращать на на него внимания...

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
А вот если взять код команды, то все работает:
Мне всегда нравится, когда в разных местах выполняют совершенно разный код, а затем жалуются, что в одном случае работает, а в другом нет, хотя делаю то же самое :)

В коде есть мусор
Есть подозрения, что именно он и может являться причиной.

но прошу не обращать на на него внимания...
обращу лишь на одну вещь. При использовании using, вызывать метод Dispose не нужно.

Собственно я не увидел главного, как вызывается форма из команды..
И на всякий случай уточню, команда вызывается из редактора семейств, верно?

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
И на всякий случай уточню, команда вызывается из редактора семейств, верно?

Да, а это критично?

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
При использовании using, вызывать метод Dispose не нужно.

Хорошо, запомню :) Спасибо!

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Конечно. Редактирование параметров семейств возможно только в редакторе семейств. В простом проекте свойство Document.FamilyManager будет равно null
« Последнее редактирование: 26-10-2015, 19:00:33 от Александр Ривилис »