27/01/2016
Как создать pdf-подложку средствами AutoCAD .NET?
PDF подложки представлены классами PdfDefinition и PdfReference classes в AutoCAD .NET API. Вставка подложка (в данном случае PDF) должна ссылаться на совместимое определение подложки. Вставка подложка определяет положение контента в чертеже, определение подложки определяет контент подложки.
Примечание: Путь к PDF-файлу в коде указан явно и нуждается в редактировани, чтобы соответствовать пути к файлу в вашей системе.
Код - C#: [Выделить]
- [CommandMethod("pdfInsert")]
- static public void DoPdfInsert()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- using (Transaction t =
- doc.TransactionManager.StartTransaction())
- {
- DBDictionary nod =
- (DBDictionary)t.GetObject(db.NamedObjectsDictionaryId,
- OpenMode.ForWrite);
- string defDictKey =
- UnderlayDefinition.GetDictionaryKey(typeof(PdfDefinition));
- if (!nod.Contains(defDictKey))
- {
- using (DBDictionary dict = new DBDictionary())
- {
- nod.SetAt(defDictKey, dict);
- t.AddNewlyCreatedDBObject(dict, true);
- }
- }
- ObjectId idPdfDef;
- DBDictionary pdfDict =
- (DBDictionary)t.GetObject(nod.GetAt(defDictKey),
- OpenMode.ForWrite);
- using (PdfDefinition pdfDef = new PdfDefinition())
- {
- pdfDef.SourceFileName = @"C:\temp\test.pdf";
- idPdfDef = pdfDict.SetAt("TEST", pdfDef);
- t.AddNewlyCreatedDBObject(pdfDef, true);
- }
- BlockTable bt =
- (BlockTable)t.GetObject(db.BlockTableId,
- OpenMode.ForRead);
- BlockTableRecord btr =
- (BlockTableRecord)t.GetObjec(
- bt[BlockTableRecord.ModelSpace],
- OpenMode.ForWrite);
- using (PdfReference pdf = new PdfReference())
- {
- pdf.DefinitionId = idPdfDef;
- btr.AppendEntity(pdf);
- t.AddNewlyCreatedDBObject(pdf, true);
- }
- t.Commit();
- }
- }
Источник: http://adndevblog.typepad.com/autocad/2012/04/how-to-create-a-pdf-reference-in-autocadnet.html
Автор перевода: Александр Ривилис
Отредактировано 28.01.2016 в 12:16:02
Обсуждение: http://adn-cis.org/forum/index.php?topic=3368
Опубликовано 27.01.2016Отредактировано 28.01.2016 в 12:16:02