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

19/06/2013

eInvalidInput при создании штриховки с пользовательским шаблоном

Если метод SetHatchPattern возбуждает исключение eInvalidInput при создании пользовательского шаблона штриховки, есть несколько моментов, которые стоит проверить:

1) Имеет ли правильное имя файл штриховки, который определяет пользовательский образец штриховки? Имя пользовательского образца и имя файла должны совпадать.

2) Добавлен ли каталог, в котором содержится файл штриховки в пути поддержки AutoCAD?

3) Всё ли хорошо с разрывами строк в файле штриховки? Самый простой способ убедиться, что всё нормально, это взять существующий файл пользовательского шаблона штриховки и изменить определения в соответствии с вашими требованиями. AutoCAD чувствителен к разрывам строк в файле штриховки и исключение eInvalidInput может быть сложно обнаружить. Вы можете найти несколько интернет-ресурсов, таких как этот, чтобы загрузить готовые файлы пользовательских шаблонов штриховок.

Это пример кода, который проверяет пользовательский шаблон штриховки:

Код - C#: [Выделить]
  1. Document doc = Application.DocumentManager.MdiActiveDocument;
  2. Database db = doc.Database;
  3. Editor ed = doc.Editor;
  4.  
  5. PromptResult prHatchPatternName
  6.         = ed.GetString("\nВведите имя пользовательского шаблона штриховки: ");
  7. if (prHatchPatternName.Status != PromptStatus.OK)
  8.     return;
  9. string patName = prHatchPatternName.StringResult;
  10.  
  11. PromptPointResult ppr = ed.GetPoint("Укажите точку вставки: ");
  12. if (ppr.Status != PromptStatus.OK)
  13.     return;
  14. Point3d insertionPt = ppr.Value;
  15.  
  16. try
  17. {
  18.     using (Transaction tr = db.TransactionManager.StartTransaction())
  19.     {
  20.         BlockTable bt
  21.             = tr.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
  22.  
  23.         BlockTableRecord btr
  24.             = tr.GetObject( bt[BlockTableRecord.ModelSpace],
  25.                             OpenMode.ForWrite
  26.                           ) as BlockTableRecord;
  27.  
  28.         Point2d pt = new Point2d(insertionPt.X, insertionPt.Y);
  29.  
  30.         Polyline plBox;
  31.         plBox = new Polyline(4);
  32.         plBox.Normal = Vector3d.ZAxis;
  33.         plBox.AddVertexAt(0, pt, 0.0, -1.0, -1.0);
  34.         plBox.AddVertexAt(1,
  35.           new Point2d(pt.X + 10, pt.Y), 0.0, -1.0, -1.0);
  36.         plBox.AddVertexAt(2,
  37.           new Point2d(pt.X + 10, pt.Y + 5), 0.0, -1.0, -1.0);
  38.         plBox.AddVertexAt(3,
  39.           new Point2d(pt.X, pt.Y + 5), 0.0, -1.0, -1.0);
  40.         plBox.Closed = true;
  41.  
  42.         ObjectId pLineId;
  43.         pLineId = btr.AppendEntity(plBox);
  44.         tr.AddNewlyCreatedDBObject(plBox, true);
  45.  
  46.         ObjectIdCollection ObjIds = new ObjectIdCollection();
  47.         ObjIds.Add(pLineId);
  48.  
  49.         Hatch hatchObj = new Hatch();
  50.         hatchObj.SetDatabaseDefaults();
  51.  
  52.         Vector3d normal = new Vector3d(0.0, 0.0, 1.0);
  53.         hatchObj.HatchObjectType = HatchObjectType.HatchObject;
  54.         hatchObj.Color =
  55.            Autodesk.AutoCAD.Colors.Color.FromColor(
  56.               System.Drawing.Color.Blue
  57.            );
  58.         hatchObj.Normal = normal;
  59.         hatchObj.Elevation = 0.0;
  60.  
  61.         hatchObj.SetHatchPattern(
  62.              HatchPatternType.CustomDefined, patName);
  63.  
  64.         btr.AppendEntity(hatchObj);
  65.         tr.AddNewlyCreatedDBObject(hatchObj, true);
  66.         hatchObj.Associative = true;
  67.         hatchObj.AppendLoop((int)HatchLoopTypes.Default, ObjIds);
  68.         hatchObj.EvaluateHatch(true);
  69.  
  70.         tr.Commit();
  71.     }
  72. }
  73. catch (System.Exception ex)
  74. {
  75.     ed.WriteMessage(ex.ToString() + Environment.NewLine);
  76. }

 

Источник: http://adndevblog.typepad.com/autocad/2013/04/einvalidinput-while-creating-hatch-with-customdefined-pattern.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=103.0

Опубликовано 19.06.2013
Отредактировано 20.06.2013 в 22:33:02