Создать группу точек из формы

Автор Тема: Создать группу точек из формы  (Прочитано 2336 раз)

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

Оффлайн vermesserАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 66
  • Карма: 2
Добрый день!

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

Код - 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("Группа существует!")
Почему не удаётся создать группу точек из кода формы?

Спасибо!

Отмечено как Решение vermesser 13-01-2019, 15:04:21

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Создать группу точек из формы
« Ответ #1 : 13-01-2019, 14:55:27 »
Немодальная форма выполняется в контексте приложения, а не документа. Поэтому документ следует блокировать для его изменения.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн vermesserАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 66
  • Карма: 2
Re: Создать группу точек из формы
« Ответ #2 : 13-01-2019, 15:05:44 »
Немодальная форма выполняется в контексте приложения, а не документа. Поэтому документ следует блокировать для его изменения.
Спасибо большое!