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

23/04/2014

Штриховка при помощи AutoCAD .NET API

Ниже код показывает процедуру создания ассоциативной штриховки  с помощью .NET. Прежде чем сделать штриховку ассоциативной, она должна быть добавлена в базу.

Код - C#: [Выделить]
  1. [CommandMethod("testHatch")]
  2. static public void testHatch()
  3. {
  4.     Document doc = Application.DocumentManager.MdiActiveDocument;
  5.     Database db = doc.Database;
  6.     Editor ed = doc.Editor;
  7.  
  8.     using (Transaction Tx = db.TransactionManager.StartTransaction())
  9.     {
  10.         ObjectId ModelSpaceId =
  11.                 SymbolUtilityServices.GetBlockModelSpaceId(db);
  12.  
  13.         BlockTableRecord btr = Tx.GetObject(ModelSpaceId,
  14.                           OpenMode.ForWrite) as BlockTableRecord;
  15.  
  16.         Point2d pt = new Point2d(0.0, 0.0);
  17.         Autodesk.AutoCAD.DatabaseServices.Polyline plBox =
  18.                   new Autodesk.AutoCAD.DatabaseServices.Polyline(4);
  19.  
  20.         plBox.Normal = Vector3d.ZAxis;
  21.         plBox.AddVertexAt(0, pt, 0.0, -1.0, -1.0);
  22.         plBox.AddVertexAt(1,
  23.                      new Point2d(pt.X + 10, pt.Y), 0.0, -1.0, -1.0);
  24.         plBox.AddVertexAt(2,
  25.                   new Point2d(pt.X + 10, pt.Y + 5), 0.0, -1.0, -1.0);
  26.         plBox.AddVertexAt(3,
  27.                       new Point2d(pt.X, pt.Y + 5), 0.0, -1.0, -1.0);
  28.         plBox.Closed = true;
  29.  
  30.         ObjectId pLineId;
  31.         pLineId = btr.AppendEntity(plBox);
  32.         Tx.AddNewlyCreatedDBObject(plBox, true);
  33.  
  34.         ObjectIdCollection ObjIds = new ObjectIdCollection();
  35.         ObjIds.Add(pLineId);
  36.  
  37.         Hatch oHatch = new Hatch();
  38.         Vector3d normal = new Vector3d(0.0, 0.0, 1.0);
  39.         oHatch.Normal = normal;
  40.         oHatch.Elevation = 0.0;
  41.         oHatch.PatternScale = 2.0;
  42.         oHatch.SetHatchPattern(HatchPatternType.PreDefined, "ZIGZAG");
  43.         oHatch.ColorIndex = 1;
  44.  
  45.         btr.AppendEntity(oHatch);
  46.         Tx.AddNewlyCreatedDBObject(oHatch, true);
  47.         // Вот теперь можно сделать штриховку ассоциативной
  48.         oHatch.Associative = true;
  49.         oHatch.AppendLoop((int)HatchLoopTypes.Default, ObjIds);
  50.         oHatch.EvaluateHatch(true);
  51.  
  52.         Tx.Commit();
  53.     }
  54.  
  55. }

 

Источник: http://adndevblog.typepad.com/autocad/2012/07/hatch-using-the-autocad-net-api.html

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

Опубликовано 23.04.2014