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

ADN Club => AutoCAD .NET API => Тема начата: Александр Пекшев aka Modis от 01-10-2015, 21:27:01

Название: LinetypeDialog не добавляет тип линии
Отправлено: Александр Пекшев aka Modis от 01-10-2015, 21:27:01
Всем доброго времени суток. Потребовалось мне из окна своей программы иметь возможность выбирать тип линий для слоя. Для выбора типа линий использую 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} (Хотя в само окно со списком типов линий новый тип добавится). Если я добавлю новый тип линий стандартными средствами автокада, то все ок - в моем диалоге я могу выбирать добавленный тип линий.
Есть способ решить данную проблему?
Название: Re: LinetypeDialog не добавляет тип линии
Отправлено: Александр Ривилис от 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. }

Название: Re: LinetypeDialog не добавляет тип линии
Отправлено: Александр Пекшев aka Modis от 02-10-2015, 09:34:12
Да, запускается из другого окна. Сейчас попробовал ваш код, прикрутив его к окну - работает. Правда проблемный код, в котором у меня не работает, дома. Так что теперь только вечером проверю
Название: Re: LinetypeDialog не добавляет тип линии
Отправлено: Андрей Бушман от 02-10-2015, 11:17:35
Правда проблемный код, в котором у меня не работает, дома. Так что теперь только вечером проверю
На тот случай, если будет интересно...

Дабы не испытывать подобных неудобств, можно воспользоваться Git (https://git-scm.com/). Мануал на русском здесь (http://www.piter.com/product_by_id/44690054). Свои репозитории, использующие Git, ты можешь дополнительно (помимо локальной машинки) хранить в сети компании, а так же в Интернете на таких ресурсах как GitHub  (https://github.com/)и BitBucket (https://bitbucket.org/). Синхронизация и ветвления осуществляются моментально (по твоей команде). Сам решаешь какие репозитории делать public, а какие private. Сам решаешь кому и какой доступ давать к ним. Можешь легко применять патчи, выполненные др. разработчиками (если посчитаешь эти патчи полезными). На обозначенных онлайн-сервисах для твоих репозиториев дополнительно предоставляются багтракеры, вики, комменты к коду, а так же возможность помимо исходников выкладывать и релизы. Тебе, скорее всего, более подойдёт сервис BitBucket (принцип использования очень схож с GitHub), т.к. позволяет бесплатно создавать как открытые, так и закрытые репозитории в неограниченном количестве. Про удобство ветвлений расписывать не буду - сам прочтёшь в мануале, если заинтересуешься.
Название: Re: LinetypeDialog не добавляет тип линии
Отправлено: Александр Пекшев aka Modis от 02-10-2015, 11:34:25
Андрей Бушман, это все конечно интересно и полезно, но в моем случае просто-напросто - не требуется. На работе я работаю и это не связанно с программированием ) Просто бывает свободное время в которое я могу почитать форумы или потестить что-нибудь небольшое. Но заниматься основным объемным проектом - это тратить много времени, отвлекаясь от основной работы (за которую я получаю з/п). Как говорится "за двумя зайцами..."
Название: Re: LinetypeDialog не добавляет тип линии
Отправлено: Владимир Шу от 02-10-2015, 16:09:44
Modis, Напрасно так сходу отказываешься.
Я вот при написании кода пробую много разных подходов, и вместо того что бы создавать временные папки и архивчики, пользуюсь git локально, но при необходимости в пару щелчков отправляю код в инет, что бы посмотреть потом дома...
Git это очень удобно.
Название: Re: LinetypeDialog не добавляет тип линии
Отправлено: Александр Пекшев aka Modis от 02-10-2015, 16:12:20
Modis, Напрасно так сходу отказываешься.
Я вот при написании кода пробую много разных подходов, и вместо того что бы создавать временные папки и архивчики, пользуюсь git локально, но при необходимости в пару щелчков отправляю код в инет, что бы посмотреть потом дома...
Git это очень удобно.
Так я и пишу код только дома)) И не делаю никаких временных папок и архивчиком. Мне просто это не требуется
Название: Re: LinetypeDialog не добавляет тип линии
Отправлено: Владимир Шу от 02-10-2015, 16:18:41
Ну так, я на работе идеи проверяю и юзабильность, а окончательную сборку делаю дома =) Что бы вопросов не было...
Забавно, что дома все это собираю под linux-ом в mono develop =о) И все работает =о)
Название: Re: LinetypeDialog не добавляет тип линии
Отправлено: Алексей Кулик от 02-10-2015, 16:48:01
ак я и пишу код только дома)) И не делаю никаких временных папок и архивчиком. Мне просто это не требуется
Я тоже когда-то так думал. Пока не понадобилось восстанавливать "ненужный" алгоритм ;)