Не копируются примитивы в буфер обмена

Автор Тема: Не копируются примитивы в буфер обмена  (Прочитано 29558 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Спасибо за ответ, тщательно проанализирую код и проверю шаблон на ошибки.
Думаю если на моей машине все нормально, может непосредственно у пользователя в шаблоне ошибки.
массив Entity формирую просто

к примеру так:
...
Dim Ent = new List(of Entity)
Dim ln As New Autodesk.AutoCAD.DatabaseServices.Line(p3d1, p3d2)
Ent.Add(Ln)
...
Сложных объектов не использую, только:
Line, Ellipce, DBText, Mtext, Polyline, Hatch, еще использую BlockReference, но не для этого случая.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
массив Entity формирую просто

к примеру так:
...
Dim Ent = new List(of Entity)
Dim ln As New Autodesk.AutoCAD.DatabaseServices.Line(p3d1, p3d2)
Ent.Add(Ln)

Конечно же я имел в виду не этот кусочек кода. Значительно интереснее как этим примитивам задаются параметры типа цвет, слой, тип линии и т.д. и как эти параметры связаны с базой шаблона.

И конечно же нужно понять как ты эти примитивы добавляешь в базу. И добавляешь ли только примитивы.
Короче говоря без кода помочь крайне сложно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
В целом весь код большой (4000 записей) и для анализа с ним работать будет трудно.
Если я не найду причину, то я выберу ключевые алгоритмы пришлю для анализа кода только их.

Проверил у себя командой _AUDIT:
в шаблоне  - ошибок нет.
в результирующем файле - ошибок нет.

Нужно взять еще у пользователя файл шаблона и проверить его на ошибки


Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Значительно интереснее как этим примитивам задаются параметры типа цвет, слой, тип линии и т.д

По этому поводу я обратил внимание на то, что, к примеру,  цвет и вес линии можно задать примитиву, не добавляя его в базу. А вот, что касается:  установки слоев, выравнивания текстов, назначения ассоциаций заливкам, масштабирование (scale), перемещение, то это возможно сделать только после добавления примитива в базу методами
AppendEntity(Entity)
AddNewlyCreatedDBObject(Entity, True)
и только потом устанавливает слои и прочее...

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
А вот, что касается:  установки слоев, выравнивания текстов, назначения ассоциаций заливкам, масштабирование (scale), перемещение, то это возможно сделать только после добавления примитива в базу методами
AppendEntity(Entity)
AddNewlyCreatedDBObject(Entity, True)
и только потом устанавливает слои и прочее...
Ну есть еще и метод Entity.SetDatabaseDefaults Method (Database)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
SetDatabaseDefaults
Я об этом методе знаю, но пока еще его не применял.
Времени не хватало разобраться.
Судя по названию и передаваемому аргументу этот
метод устанавливает основные параметры (слой, цвет и т.п.) примитиву,
которые определены базой, передаваемой в аргументе, или без этого аргумента.
 

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Сделал тестовый вариант в котором ничего с базой данных чертежа не делаю
просто открываю шаблон и сохраняю его SaveAs(...)
И все равно ошибки в результирующем файле c:\1\new_file.dwg ошибки
Такое только в acad 2015 и 2014. В acad 2012 такого нет. В acad 2013 не проверял.
Прикрепляю файл шаблона dwt
Вот код:
Код - vb.net [Выбрать]
  1.         <CommandMethod("TEST_OUT_FILE")> _
  2.         Public Sub test_out()
  3.             Dim db As New Database()
  4.             Dim NameTemplate As String = "c:\1\psm_profil.dwt"
  5.             db.ReadDwgFile(NameTemplate, IO.FileShare.ReadWrite, False, Nothing)
  6.             Dim FullFileName As String = "c:\1\new_file.dwg"
  7.             db.SaveAs(FullFileName, Autodesk.AutoCAD.DatabaseServices.DwgVersion.Current)
  8.             db.CloseInput(True)
  9.             db.Dispose()
  10.         End Sub
  11.  

Отмечено как Решение Александр Ривилис 27-08-2015, 10:32:29

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
http://adn-cis.org/forum/index.php?topic=538.msg1718#msg1718
Нашел 2 отличия:
1. База данных создается с параметрами.
2. CloseInput перед SaveAs

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не проверял, но похоже именно в этом причина. В первую очередь это связано с конструктором. Если дальше планируется использовать метод ReadDwgFile, то первый параметр конструктора должен быть false. Иначе создается база с готовыми таблицами и ReadDwgFile приведет к дублированию таблиц и соотвественно база может стать сбойной.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Ребята спасибо!
Cделал в констркуторе Database(false, true)
и CloseInput поставил перед SaveAs
Проверил все работает без ошибок!


Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Отлично!
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение