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

ADN Club => AutoCAD .NET API => Тема начата: serega374 от 20-11-2018, 11:00:32

Название: Как создать новый тип линии или загрузить стандартный или из своего файла?
Отправлено: serega374 от 20-11-2018, 11:00:32
Задаю тип линии примитиву

Код - C# [Выбрать]
  1. Polyline.Linetype="ACAD_ISO02W100";

При старте AutoCAD тип линии "ACAD_ISO02W100" по умолчанию не загружается, и соответственно возникает исключение.

Можно ли создать программно, например штриховую линию "--------" или такую "--x--x--x--".?
И если нет как их загрузить из файла *.lin?
Название: Re: Как создать новый тип линии или загрузить стандартный или из своего файла?
Отправлено: Александр Ривилис от 20-11-2018, 11:32:20
Здесь два вопроса. Перефразирую их:
1. Можно ли загрузить тип линии из файла?
2. Можно ли создать тип линии "налету" без файла типов линий?
На оба вопроса ответ "ДА".
Название: Re: Как создать новый тип линии или загрузить стандартный или из своего файла?
Отправлено: Александр Ривилис от 20-11-2018, 11:39:45
Как загрузить тип линии из файла? Для этой цели можно использовать метод: Database.LoadLineTypeFile
Первый параметр - имя типа линии, второй - имя файла/путь к файлу.
Название: Re: Как создать новый тип линии или загрузить стандартный или из своего файла?
Отправлено: Александр Ривилис от 20-11-2018, 11:50:35
Как создать тип линии на лету? Вот две статьи с примерами кода:
Creating an AutoCAD linetype programmatically using .NET (https://www.keanw.com/2008/01/creating-an-aut.html)
Creating a complex AutoCAD linetype containing text using .NET (https://www.keanw.com/2008/01/creating-a-comp.html)
Название: Re: Как создать новый тип линии или загрузить стандартный или из своего файла?
Отправлено: serega374 от 20-11-2018, 12:08:31
Спасибо Александр , Database.LoadLineTypeFile помогло
Код - C# [Выбрать]
  1. using (Transaction trAdding = dbCurrent.TransactionManager.StartTransaction())
  2.             {
  3. LinetypeTable ltt = (LinetypeTable)trAdding.GetObject(dbCurrent.LinetypeTableId, OpenMode.ForRead);
  4.  
  5.                 if (!ltt.Has("ACAD_ISO02W100"))
  6.                 {
  7.                     dbCurrent.LoadLineTypeFile("ACAD_ISO02W100", "acadiso.lin");
  8.                 }
  9.                    trAdding.Commit();
  10.             }