LinetypeDialog не добавляет тип линии

Автор Тема: LinetypeDialog не добавляет тип линии  (Прочитано 7897 раз)

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

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Всем доброго времени суток. Потребовалось мне из окна своей программы иметь возможность выбирать тип линий для слоя. Для выбора типа линий использую LinetypeDialog. Да вот беда - он не загружает новые типы линий в БД! Вызываю так:
Код - C# [Выбрать]
  1. private void BtLineType_OnClick(object sender, RoutedEventArgs e)
  2.         {
  3.             var selectedLayer = DgLayers.SelectedItem as LayerForWindow;
  4.             if (selectedLayer != null)
  5.             {
  6.                 var ltd = new LinetypeDialog {IncludeByBlockByLayer = false};
  7.                 if (ltd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  8.                 {
  9.                     selectedLayer.LineType = StandardHelpers.GetLineTypeName(ltd.Linetype);
  10.                     DgLayers.Items.Refresh();
  11.                     Focus();
  12.                 }
  13.             }
  14.         }
Если в диалоговом окне нажму "Загрузить", выберу тип линий (все стандартное - acadiso.lin) и нажму "Добавить" - тип линий не добавится в БД и диалог вернет {0} (Хотя в само окно со списком типов линий новый тип добавится). Если я добавлю новый тип линий стандартными средствами автокада, то все ок - в моем диалоге я могу выбирать добавленный тип линий.
Есть способ решить данную проблему?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: LinetypeDialog не добавляет тип линии
« Ответ #1 : 01-10-2015, 22:22:22 »
Не увидел блокировки чертежа, а судя по всему это контекст приложения.

В обычной команде всё нормально работает:
Код - C# [Выбрать]
  1. using System;
  2. using Autodesk.AutoCAD.Runtime;
  3. using Autodesk.AutoCAD.ApplicationServices;
  4. using Autodesk.AutoCAD.DatabaseServices;
  5. using Autodesk.AutoCAD.Geometry;
  6. using Autodesk.AutoCAD.EditorInput;
  7. using Autodesk.AutoCAD.Windows;
  8.  
  9. [assembly: CommandClass(typeof(TestLineTypeDialog.Utils))]
  10.  
  11. namespace TestLineTypeDialog
  12. {
  13.   public class Utils
  14.   {
  15.     [CommandMethod("LTDialog")]
  16.     public void MyCommand()
  17.     {
  18.       Document doc = Application.DocumentManager.MdiActiveDocument;
  19.       if (doc == null) return;
  20.       Editor ed = doc.Editor;
  21.       LinetypeDialog dlg = new LinetypeDialog();
  22.       dlg.IncludeByBlockByLayer = false;
  23.       if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  24.       {
  25.         if (dlg.Linetype.IsNull) {
  26.           ed.WriteMessage("\nLinetype = null");
  27.         } else {
  28.           using (LinetypeTableRecord ltr = dlg.Linetype.Open(OpenMode.ForRead) as LinetypeTableRecord)
  29.           {
  30.             ed.WriteMessage("\nLinetype = {0} ({1})", ltr.Name, dlg.Linetype);
  31.           }
  32.         }
  33.       }
  34.     }
  35.   }
  36. }

« Последнее редактирование: 01-10-2015, 23:16:28 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: LinetypeDialog не добавляет тип линии
« Ответ #2 : 02-10-2015, 09:34:12 »
Да, запускается из другого окна. Сейчас попробовал ваш код, прикрутив его к окну - работает. Правда проблемный код, в котором у меня не работает, дома. Так что теперь только вечером проверю

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: LinetypeDialog не добавляет тип линии
« Ответ #3 : 02-10-2015, 11:17:35 »
Правда проблемный код, в котором у меня не работает, дома. Так что теперь только вечером проверю
На тот случай, если будет интересно...

Дабы не испытывать подобных неудобств, можно воспользоваться Git. Мануал на русском здесь. Свои репозитории, использующие Git, ты можешь дополнительно (помимо локальной машинки) хранить в сети компании, а так же в Интернете на таких ресурсах как GitHub и BitBucket. Синхронизация и ветвления осуществляются моментально (по твоей команде). Сам решаешь какие репозитории делать public, а какие private. Сам решаешь кому и какой доступ давать к ним. Можешь легко применять патчи, выполненные др. разработчиками (если посчитаешь эти патчи полезными). На обозначенных онлайн-сервисах для твоих репозиториев дополнительно предоставляются багтракеры, вики, комменты к коду, а так же возможность помимо исходников выкладывать и релизы. Тебе, скорее всего, более подойдёт сервис BitBucket (принцип использования очень схож с GitHub), т.к. позволяет бесплатно создавать как открытые, так и закрытые репозитории в неограниченном количестве. Про удобство ветвлений расписывать не буду - сам прочтёшь в мануале, если заинтересуешься.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: LinetypeDialog не добавляет тип линии
« Ответ #4 : 02-10-2015, 11:34:25 »
Андрей Бушман, это все конечно интересно и полезно, но в моем случае просто-напросто - не требуется. На работе я работаю и это не связанно с программированием ) Просто бывает свободное время в которое я могу почитать форумы или потестить что-нибудь небольшое. Но заниматься основным объемным проектом - это тратить много времени, отвлекаясь от основной работы (за которую я получаю з/п). Как говорится "за двумя зайцами..."

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: LinetypeDialog не добавляет тип линии
« Ответ #5 : 02-10-2015, 16:09:44 »
Modis, Напрасно так сходу отказываешься.
Я вот при написании кода пробую много разных подходов, и вместо того что бы создавать временные папки и архивчики, пользуюсь git локально, но при необходимости в пару щелчков отправляю код в инет, что бы посмотреть потом дома...
Git это очень удобно.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: LinetypeDialog не добавляет тип линии
« Ответ #6 : 02-10-2015, 16:12:20 »
Modis, Напрасно так сходу отказываешься.
Я вот при написании кода пробую много разных подходов, и вместо того что бы создавать временные папки и архивчики, пользуюсь git локально, но при необходимости в пару щелчков отправляю код в инет, что бы посмотреть потом дома...
Git это очень удобно.
Так я и пишу код только дома)) И не делаю никаких временных папок и архивчиком. Мне просто это не требуется

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: LinetypeDialog не добавляет тип линии
« Ответ #7 : 02-10-2015, 16:18:41 »
Ну так, я на работе идеи проверяю и юзабильность, а окончательную сборку делаю дома =) Что бы вопросов не было...
Забавно, что дома все это собираю под linux-ом в mono develop =о) И все работает =о)

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: LinetypeDialog не добавляет тип линии
« Ответ #8 : 02-10-2015, 16:48:01 »
ак я и пишу код только дома)) И не делаю никаких временных папок и архивчиком. Мне просто это не требуется
Я тоже когда-то так думал. Пока не понадобилось восстанавливать "ненужный" алгоритм ;)
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!