Forge, API и программирование – Русский – только для чтения
Задавайте вопросы и делитесь знаниями по Autodesk Forge и программированию на API программного обеспечения Autodesk
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

c# - создать файл dwg

18 REPLIES 18
SOLVED
Reply
Message 1 of 19
Anonymous
3998 Views, 18 Replies

c# - создать файл dwg

Здравствуйте!

 

Вопрос: Могу ли я на c# создать dwg-файл на компьютере, без ЗАПУЩЕННОГО автокада? (в наличии: .net 4.0, autocad 2014)

Если есть положительный ответ, то, пожалуйста, пример кода + подключаемые длл из автокада. И было бы вообще здорово, если в этом файле нарисовать один прямоугольник красного цвета. Спасибо.

18 REPLIES 18
Message 2 of 19
Alexander.Rivilis
in reply to: Anonymous

Краткий ответ: не можешь. Всё бесплатное API требует, чтобы AutoCAD (или AcCoreConsole.exe) был запущен. Или нужно покупать небесплатное RealDWG.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 3 of 19
Anonymous
in reply to: Alexander.Rivilis

1. То есть, купленного автокада не достаточно? Насчет запущен, хорошо, он запущен. Как НЕ в атокаде, а просто на диске, создать файл dwg?

 

2.  По RealDWG: цена, где купить, есть ли триал и пример создания того же файла на диске?

Message 4 of 19
Alexander.Rivilis
in reply to: Anonymous


@Anonymous wrote:

1. То есть, купленного автокада не достаточно? Насчет запущен, хорошо, он запущен. Как НЕ в атокаде, а просто на диске, создать файл dwg?


Я не понимаю что такое "НЕ в автокаде". При помощи C# делаешь dll-сборку, которая загружается в AutoCAD и создаёт нужный тебе dwg-файл используя AutoCAD .NET API (сборки acdbmgd.dll, accoremgd.dll, acmgd.dll - вне AutoCAD эти сборки не работают.)

Если нужно подробнее - прошу сюда: AutoCAD .NET API

 


@Anonymous wrote:

 

2.  По RealDWG: цена, где купить, есть ли триал и пример создания того же файла на диске?


По поводу RealDWG сюда: http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=770257

Думаю, что триала нет. Впрочем можешь там уточнить.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 5 of 19
Anonymous
in reply to: Alexander.Rivilis

"не в автокаде" - значит не в самом приложении автокада, а просто в самой винде, на диске. (пример: как через проводник создать текстовый файл).

грубо, на форме c# есть кнопка, по щелчку на оной, создать файл dwg НА ДИСКЕ, к примеру: c:\test.dwg.

Message 6 of 19
Alexander.Rivilis
in reply to: Anonymous


@Anonymous wrote:

"не в автокаде" - значит не в самом приложении автокада, а просто в самой винде, на диске. (пример: как через проводник создать текстовый файл).

грубо, на форме c# есть кнопка, по щелчку на оной, создать файл dwg НА ДИСКЕ, к примеру: c:\test.dwg.


Единственный вариант - по кнопке запускается AutoCAD (или цепляешься к уже запущенному) и там уже через COM/ActiveX создаешь dwg-файл.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 7 of 19
Anonymous
in reply to: Alexander.Rivilis

не ту кнопку нажал - не утвержден в качестве ответа.

 

насчет ссылки на realdwg - 404 - "

We can't seem to find the page you're looking for Please use the links below to continue your search or go to the Autodesk homepage."
Message 8 of 19
Anonymous
in reply to: Anonymous

есть библиотека с триалом, КадЛиб называется (цена от 600 долларов), так вот там одной строкой создается файл на диске. Вот и спрашиваю здесь что-то подобное есть или нет.

 

Message 9 of 19
Alexander.Rivilis
in reply to: Anonymous


@Anonymous wrote:

не ту кнопку нажал - не утвержден в качестве ответа.

 

насчет ссылки на realdwg - 404 - "

We can't seem to find the page you're looking for Please use the links below to continue your search or go to the Autodesk homepage."

Попробуй еще раз. У меня вот такая страница появляется:

 

RealDWG

Get to market faster and give your products a competitive edge with the RealDWG® software development kit (SDK) from Autodesk. It's the only software development toolkit that provides DWG™ file read/write capability from the source.

The RealDWG toolkit helps you share design data with confidence using the native DWG file format. So you can create applications with 100 percent DWG read/write capability. Deliver your products with the latest DWG file technology and DWG viewers available from Autodesk.

The RealDWG software library allows C++ and .NET developers to read and write DXF™ and DWG™ files created with AutoCAD® software. The most current version of RealDWG provides compatibility with AutoCAD DWG files, including read and write support for AutoCAD releases since AutoCAD Release 14 and drawing enhancements available with the most current version of AutoCAD. RealDWG is also used internally by Autodesk to provide DWG support in non-AutoCAD-based applications, such as Autodesk® Revit® software-based products and Autodesk® Inventor® software products.

 

RealDWG Frequently Asked Questions

 

1. What is RealDWG?
The RealDWG® developer toolkit is a software library that allows C++ and .NET developers to read and write AutoCAD® software DWG and DXF files.

 

2. How do I license RealDWG?
RealDWG is licensed as a software development kit (SDK) exclusively from our partners, Tech Soft 3D. To obtain a copy of the RealDWG software development kit (SDK) license application, simply download a copy from Tech Soft 3D or email them. Developers may also apply fill out and submit the license application form to obtain a copy of the RealDWG® software development kit (SDK) license application.

 

3. What is the difference between RealDWG and ObjectARX for AutoCAD?
RealDWG is a subset of the ObjectARX® programming environment and contains the APIs for reading and writing AutoCAD DXF and DWG files. RealDWG does not contain support for viewing and accessing the AutoCAD user interface.

Also, ObjectARX applications always require AutoCAD as their host application. RealDWG does not require the presence of AutoCAD software. RealDWG is used to create host applications, but ObjectARX is not.

 

4. Is developer support or training available for RealDWG?
Developer support for RealDWG is available through the Autodesk public forums (choose the ObjectARX or .NET forum depending on which RealDWG API you are using) or through the Autodesk Developer Network (ADN).

 

5. Is RealDWG available for 64-bit operating systems?
Yes, RealDWG is available for both 32-bit and 64-bit operating systems. However, deployment of 32-bit applications on a 64-bit operating system is not supported.

 

Learning

DevTV: Introduction to RealDWG Programming
A short video tutorial to starting your first RealDWG .NET application
View online | Download

 

System Requirements

For 32-Bit and 64-Bit RealDWG® 2017

  • Microsoft® Windows® 7 SP1, Microsoft Windows 8.1 with Update KB2919355, Microsoft Windows 10
  • 1 gigahertz (GHz) or faster 32-bit (x86) or 64-bit (x64) processor
  • 8 GB RAM or more
  • 2 GB free hard disk available not including installation requirements
  • Visual Studio 2015
  • Available as download only

Note: Development of RealDWG® 32-bit software on a 64-bit Windows® operating system is supported; however, deployment of 32-bit software on a 64-bit system is not supported. RealDWG® 64-bit software cannot be installed on a 32-bit Windows® operating system.

 

Pricing

For pricing and further information, please contact Tech Soft 3D www.techsoft3d.com

 

RealDWG License Application Form

Autodesk’s partner, Tech Soft 3D is the worldwide exclusive reseller of RealDWG. To obtain a copy of the RealDWG® software development kit (SDK) license application, simply fill out and submit the form below. You may also download a copy from the Tech Soft 3D website or contact Tech Soft 3D via email.

 

 

 

Вот такой код для создания dwg-файла из AutoCAD с прямоугольником красного цвета:

 

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;

// This line is not mandatory, but improves loading performances
[assembly: CommandClass(typeof(Rivilis.CreateDwg))]

namespace Rivilis
{
  public class CreateDwg
  {
    [CommandMethod("CreateDwg")]
    public void cmd() 
    {
      using (Database db = new Database(true, false)) {
        ObjectId idBT = db.BlockTableId;
        using (Transaction tr = db.TransactionManager.StartTransaction()) {
          BlockTable bt = 
            tr.GetObject(idBT, OpenMode.ForRead) as BlockTable;
          BlockTableRecord ms = 
            tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
          Polyline pl = new Polyline();
          pl.SetDatabaseDefaults(db);
          pl.AddVertexAt(0, new Point2d(0,   0), 0, 0, 0);
          pl.AddVertexAt(1, new Point2d(0,  10), 0, 0, 0);
          pl.AddVertexAt(2, new Point2d(10, 10), 0, 0, 0);
          pl.AddVertexAt(3, new Point2d(10,  0), 0, 0, 0);
          pl.Closed = true;
          pl.ColorIndex = 1;
          ms.AppendEntity(pl);
          tr.AddNewlyCreatedDBObject(pl, true);
          tr.Commit();
        }
        db.SaveAs(@"c:\temp\rect.dwg", DwgVersion.Current);
      }
    }
  }
}

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 10 of 19
Alexander.Rivilis
in reply to: Anonymous


@Anonymous wrote:

есть библиотека с триалом, КадЛиб называется (цена от 600 долларов), так вот там одной строкой создается файл на диске. Вот и спрашиваю здесь что-то подобное есть или нет.

 


Есть еще много разных сторонних библиотек для работы с dwg-файлами. Но на форуме Autodesk они не обсуждаются. Точка.

 

Создать одной строчкой файл на диске я тоже могу. Достаточно просто скопировать файл-шаблон. А вот если нужно в этот файл что-то записать (например, прямоугольник красного цвета, то одной строкой не отделаешься).

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 11 of 19
Anonymous
in reply to: Alexander.Rivilis

строка:

[CommandMethod("CreateDwg")]

интуитивно, создает "кнопку" в автокаде, нажав на которую создается указанный файл?
без этой "кнопки" обойтись могу?
Message 12 of 19
kpblc2000
in reply to: Anonymous

Не кнопку, а команду. И требует запущенный AutoCAD, естественно.
P.S. Как альтернатива - создавать DXF-файл, благо формат открытый.

Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям! | Do you find the posts helpful? "LIKE" these posts!
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.


Алексей Кулик aka kpblc | Aleksei Kulik aka kpblc Facebook | LinkedIn
autolisp.ru
Техническая поддержка программистов Autodesk в СНГ
Библиотека пользовательских lisp-функций | Custom Lisp-function library

Message 13 of 19
Alexander.Rivilis
in reply to: Anonymous


@Anonymous wrote:

строка:

[CommandMethod("CreateDwg")]

интуитивно, создает "кнопку" в автокаде, нажав на которую создается указанный файл?
без этой "кнопки" обойтись могу?

Можно. При загрузке dll-сборки в AutoCAD выполняется метод Initialize:

 

 

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;

// This line is not mandatory, but improves loading performances
[assembly: ExtensionApplication(typeof(Rivilis.MyPlugin))]

namespace Rivilis
{
  public class MyPlugin : IExtensionApplication
  {
    void IExtensionApplication.Initialize()
    {
      using (Database db = new Database(true, false)) {
        ObjectId idBT = db.BlockTableId;
        using (Transaction tr = db.TransactionManager.StartTransaction()) {
          BlockTable bt =
            tr.GetObject(idBT, OpenMode.ForRead) as BlockTable;
          BlockTableRecord ms =
            tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
          Polyline pl = new Polyline();
          pl.SetDatabaseDefaults(db);
          pl.AddVertexAt(0, new Point2d(0, 0), 0, 0, 0);
          pl.AddVertexAt(1, new Point2d(0, 10), 0, 0, 0);
          pl.AddVertexAt(2, new Point2d(10, 10), 0, 0, 0);
          pl.AddVertexAt(3, new Point2d(10, 0), 0, 0, 0);
          pl.Closed = true;
          pl.ColorIndex = 1;
          ms.AppendEntity(pl);
          tr.AddNewlyCreatedDBObject(pl, true);
          tr.Commit();
        }
        db.SaveAs(@"c:\temp\rect.dwg", DwgVersion.Current);
      }
    }

    void IExtensionApplication.Terminate()
    {
    }
  }
}

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 14 of 19
Anonymous
in reply to: kpblc2000

 

 

автокад, разумеется запущен (версия, на всяк. случай 2014)

 

проект в VS2010 новый, на форму добавил кнопку, в обработчике оной что написать чтобы создался файл "c:\temp\test.dwg"?

(AcCoreMgd.dll, AcDbMgd.dll, AcMgd.dll - подключены)

 

если в обработчик закинуть код

using (Database db = new Database(true, false)) {
        ObjectId idBT = db.BlockTableId;
        using (Transaction tr = db.TransactionManager.StartTransaction()) {
          BlockTable bt = 
            tr.GetObject(idBT, OpenMode.ForRead) as BlockTable;
          BlockTableRecord ms = 
            tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
          Polyline pl = new Polyline();
          pl.SetDatabaseDefaults(db);
          pl.AddVertexAt(0, new Point2d(0,   0), 0, 0, 0);
          pl.AddVertexAt(1, new Point2d(0,  10), 0, 0, 0);
          pl.AddVertexAt(2, new Point2d(10, 10), 0, 0, 0);
          pl.AddVertexAt(3, new Point2d(10,  0), 0, 0, 0);
          pl.Closed = true;
          pl.ColorIndex = 1;
          ms.AppendEntity(pl);
          tr.AddNewlyCreatedDBObject(pl, true);
          tr.Commit();
        }
        db.SaveAs(@"c:\temp\rect.dwg", DwgVersion.Current);
      }

то пишет: "Среда выполнения Common Language Runtime обнаружила недопустимую программу."

Message 15 of 19

Кстати, в RealDWG код будет аналогичным (различие возможно в паре строк).

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 16 of 19
Alexander.Rivilis
in reply to: Anonymous

Приложил полный проект. Даже в каталоге CreateDwg\bin\Debug готовый CreateDwg.dll

Его загружаешь в AutoCAD (команда NETLOAD) и автоматически создаётся c:\temp\rect.dwg (надеюсь, что такой путь есть и он доступен для записи).

Если захочешь сам перекомпилировать, то не забудь добавить правильный путь для сборок AutoCAD.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 17 of 19
Anonymous
in reply to: Alexander.Rivilis

да, файл создает. НО, совсем не то, чего хотелось то.

 

могу я не используя автокад создать такой файл? (автокад, будет запущен)

Message 18 of 19
Alexander.Rivilis
in reply to: Anonymous


@Anonymous wrote:

да, файл создает. НО, совсем не то, чего хотелось то.

 

могу я не используя автокад создать такой файл? (автокад, будет запущен)


У меня создаётся впечатление, что ты не читаешь то, что я пишу. НЕТ. Не используя AutoCAD ты не можешь создать такой файл.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 19 of 19
Anonymous
in reply to: Alexander.Rivilis

ясно. можешь закрывать.

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report