Создание штриховки по точкам

Автор Тема: Создание штриховки по точкам  (Прочитано 4116 раз)

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

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Добрый вечер,
Пробую создать штриховку по списку точек:
Код - C# [Выбрать]
  1. [CommandMethod("TestH")]
  2.         public void TestH ()
  3.         {
  4.             Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  5.             Database db = doc.Database;
  6.             Editor ed = doc.Editor;
  7.  
  8.             using (var t = db.TransactionManager.StartTransaction())
  9.             {
  10.                 var pt1 = Convert2d(ed.GetPoint("pt1").Value);
  11.                 var pt2 = Convert2d(ed.GetPoint("pt2").Value);
  12.                 var pt3 = Convert2d(ed.GetPoint("pt3").Value);              
  13.  
  14.                 var ptCol = new Point2dCollection();
  15.                 ptCol.Add(pt1);
  16.                 ptCol.Add(pt2);
  17.                 ptCol.Add(pt3);
  18.                 var dCol =new DoubleCollection();
  19.                 dCol.Add(0);
  20.                 dCol.Add(0);
  21.                 dCol.Add(0);                
  22.  
  23.                 var h = new Hatch();                                                
  24.                 h.SetHatchPattern(HatchPatternType.PreDefined, "SOLID");                
  25.                 h.AppendLoop(HatchLoopTypes.Default, ptCol, dCol);
  26.  
  27.                 var cs = db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord;
  28.                 cs.AppendEntity(h);
  29.                 t.AddNewlyCreatedDBObject(h, true);
  30.  
  31.                 h.EvaluateHatch(true);
  32.  
  33.                 t.Commit();
  34.             }          
  35.         }
  36.  
  37.         public static Point2d Convert2d (Point3d pt)
  38.         {
  39.             return new Point2d(pt.X, pt.Y);
  40.         }

Штриховка создается, но она невидимая (выбираю ее через ctrl+a), пока не дернуть за любую из ручек.

После дергания за ручку штриховка появляется:

« Последнее редактирование: 28-09-2017, 21:59:44 от Александр Ривилис »

Отмечено как Решение Вильдар 01-10-2016, 11:56:21

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Создание штриховки по точкам
« Ответ #1 : 01-10-2016, 00:26:41 »
Код - C# [Выбрать]
  1. [CommandMethod("TestH")]
  2. public void TestH()
  3. {
  4.   Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  5.   Database db = doc.Database;
  6.   Editor ed = doc.Editor;
  7.  
  8.   using (var t = db.TransactionManager.StartTransaction())
  9.   {
  10.     var pt1 = Convert2d(ed.GetPoint("pt1").Value);
  11.     var pt2 = Convert2d(ed.GetPoint("pt2").Value);
  12.     var pt3 = Convert2d(ed.GetPoint("pt3").Value);
  13.  
  14.     var ptCol = new Point2dCollection();
  15.     ptCol.Add(pt1);
  16.     ptCol.Add(pt2);
  17.     ptCol.Add(pt3);
  18.     ptCol.Add(pt1); // <- добавляем первую точку для замыкания
  19.     var dCol = new DoubleCollection();
  20.     dCol.Add(0);
  21.     dCol.Add(0);
  22.     dCol.Add(0);
  23.     dCol.Add(0);  // <- добавляем первую точку для замыкания
  24.     var h = new Hatch();
  25.     h.SetHatchPattern(HatchPatternType.PreDefined, "SOLID");
  26.     h.AppendLoop(HatchLoopTypes.External, ptCol, dCol);
  27.  
  28.     var cs = db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord;
  29.     cs.AppendEntity(h);
  30.     t.AddNewlyCreatedDBObject(h, true);
  31.  
  32.     h.EvaluateHatch(true);
  33.  
  34.     t.Commit();
  35.   }
  36. }

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Re: Создание штриховки по точкам
« Ответ #2 : 01-10-2016, 11:58:30 »
Спасибо большое!
Блин, сам не додумался  :-[

Оффлайн RevitTormentor

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Создание штриховки по точкам
« Ответ #3 : 28-09-2017, 17:12:04 »
Convert2d это какой using?
Какую библиотеку подцепить?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Создание штриховки по точкам
« Ответ #4 : 28-09-2017, 17:15:03 »
Convert2d это какой using?
Какую библиотеку подцепить?
Халтуришь. Читаешь в теме только последнее сообщение. Посмотри код в первом сообщении (под спойлером).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн RevitTormentor

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Создание штриховки по точкам
« Ответ #5 : 28-09-2017, 17:57:09 »
 :)