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

ADN Club => Civil 3D API => Тема начата: vermesser от 13-01-2019, 14:41:23

Название: Создать группу точек из формы
Отправлено: vermesser от 13-01-2019, 14:41:23
Добрый день!

Есть такой код:

Код - vb.net [Выбрать]
  1. Imports Autodesk.AutoCAD.Runtime
  2. Imports Autodesk.Civil.ApplicationServices
  3. Imports app = Autodesk.AutoCAD.ApplicationServices.Core.Application
  4.  
  5. Public Class Commands
  6.  
  7.     <CommandMethod("CUSTOMXXX")>
  8.     Public Sub Custom()
  9.         Dim civilDoc As CivilDocument = CivilApplication.ActiveDocument
  10.         If Not civilDoc.PointGroups.Contains("XXX") Then
  11.             civilDoc.PointGroups.Add("XXX")
  12.         End If
  13.     End Sub
  14.  
  15.     <CommandMethod("SHOWDIALOG")>
  16.     Public Sub ShowDialog()
  17.         Autodesk.AutoCAD.ApplicationServices.Application.ShowModelessDialog(app.MainWindow.Handle, New NewGroup, False)
  18.     End Sub
  19.  
  20. End Class

Команда SHOWDIALOG вызывает форму:

Код - vb.net [Выбрать]
  1. Imports Autodesk.Civil.ApplicationServices
  2. Imports app = Autodesk.AutoCAD.ApplicationServices.Core.Application
  3.  
  4. Public Class NewGroup
  5.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  6.         Dim civilDoc As CivilDocument = CivilApplication.ActiveDocument
  7.         If Not civilDoc.PointGroups.Contains("XXX") Then
  8.             civilDoc.PointGroups.Add("XXX")
  9.         Else
  10.             app.ShowAlertDialog("Группа существует!")
  11.         End If
  12.     End Sub
  13. End Class

Если я запускаю команду CUSTOMXXX, то в чертеже создаётся новая группа точек "XXX".

Если в новом чертеже вызываю форму (команда SHOWDIALOG ) и жму в ней на кнопку "New",
по щелчку на которой должна создаваться группа точек "XXX", то возникает ошибка:
System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
   в Autodesk.Civil.DatabaseServices.PointGroupCollection.Add(String name)
Тем не менее, если группа точек с таким именем существует в чертеже,
то об этом будет выведено сообщение:
app.ShowAlertDialog("Группа существует!")
Почему не удаётся создать группу точек из кода формы?

Спасибо!
Название: Re: Создать группу точек из формы
Отправлено: Александр Ривилис от 13-01-2019, 14:55:27
Немодальная форма выполняется в контексте приложения, а не документа. Поэтому документ следует блокировать для его изменения.
Название: Re: Создать группу точек из формы
Отправлено: vermesser от 13-01-2019, 15:05:44
Немодальная форма выполняется в контексте приложения, а не документа. Поэтому документ следует блокировать для его изменения.
Спасибо большое!