От полного нуля до ...

Автор Тема: От полного нуля до ...  (Прочитано 23861 раз)

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

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: От полного нуля до ...
« Ответ #45 : 25-08-2017, 14:32:15 »
плагины на .net ну очень зависят от версий ОС и автокада.
Это смотря как сделать. Я пишу под 2014 версию и без перекомпиляции работает в версиях 2014-2018.

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #46 : 25-08-2017, 14:58:35 »
Цитировать
Я пишу под 2014 версию и без перекомпиляции работает в версиях 2014-2018.
мои творения дальше моего компа не ходили пока что. И попробовать не было возможности.
Лень - двигатель прогресса.

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #47 : 31-08-2017, 07:48:34 »
уважаемые знатоки. назрел очередной вопрос. Как программно начертить полилинию как это делает автокад т.е.
начальная точка(мышью), резинка, вершина, отрисовка сегмента, резинка, указание мышью следующей вершины и т.д....
отключение esc, space, enter.
вот придумал малость, но явно костыль. Отключение только клавишей esc. в ПСК отключение глючит, но в остальном работает исправно, но осюсение нехорошее от кода все таки есть.
Код - C# [Выбрать]
  1.        public static ObjectId LCPolyline()
  2.         {
  3.             //Point2dCollection pts = new Point2dCollection();
  4.             Point3d pt;
  5.             int numvertex = 0;
  6.             PromptPointResult ppr;
  7.             PromptPointOptions ppo = new PromptPointOptions("");
  8.             ppo.Message = "\nEnter start vertex :";
  9.             ppr = ed.GetPoint(ppo);
  10.             if (System.Convert.ToInt32(Application.GetSystemVariable("WORLDUCS")) == 1)
  11.                 pt = ppr.Value;
  12.             else
  13.                 pt = ppr.Value.TransformBy(ed.CurrentUserCoordinateSystem);
  14.             //pts.Add(new Point2d(pt.X, pt.Y));
  15.             Point2d pt0 = new Point2d(pt.X, pt.Y);
  16.  
  17.             while (!pt.Equals(new Point3d(0, 0, 0)))
  18.             {
  19.                 using (Transaction tr = db.TransactionManager.StartTransaction())
  20.                 {
  21.                     BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
  22.                     BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite)
  23.                         as BlockTableRecord;
  24.  
  25.                     numvertex = ++numvertex;
  26.                     ppo = new PromptPointOptions("");
  27.                     ppo.Message = "\nEnter next vertex :";
  28.                     ppo.UseBasePoint = true;
  29.                     ppo.BasePoint = ppr.Value;
  30.                     ppr = ed.GetPoint(ppo);
  31.                     if (System.Convert.ToInt32(Application.GetSystemVariable("WORLDUCS")) == 1)
  32.                         pt = ppr.Value;
  33.                     else
  34.                         pt = ppr.Value.TransformBy(ed.CurrentUserCoordinateSystem);
  35.                     if (!pt.Equals(new Point3d(0, 0, 0)))
  36.                     {
  37.                         if (numvertex == 1)
  38.                         {
  39.                             using (Polyline pl = new Polyline())
  40.                             {
  41.                                 pl.AddVertexAt(0, pt0, 0, 0, 0);
  42.                                 pl.AddVertexAt(numvertex, new Point2d(pt.X, pt.Y), 0, 0, 0);
  43.                                 btr.AppendEntity(pl);
  44.                                 tr.AddNewlyCreatedDBObject(pl, true);
  45.                                 ObjId = pl.ObjectId;
  46.                             }
  47.                         }
  48.                         else
  49.                         {
  50.                             Polyline pl = tr.GetObject(ObjId, OpenMode.ForWrite) as Polyline;
  51.                             pl.AddVertexAt(numvertex, new Point2d(pt.X, pt.Y), 0, 0, 0);
  52.                         }
  53.                     }
  54.                     tr.Commit();
  55.                 }
  56.             }
  57.             return ObjId;
  58.         }
Лень - двигатель прогресса.

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

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #49 : 01-09-2017, 14:16:54 »
Владимир Шу, спасибо все получилось.
Лень - двигатель прогресса.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #50 : 01-09-2017, 14:35:23 »
nolte
В дальнейшем "Один вопрос - одна тема". Здесь уже каша из совершенно разных вопросов/тем.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #51 : 02-09-2017, 19:08:53 »
Эту тему я закрываю, чтобы не было больше желания и возможности нарушать правила форума.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение