Хочу подружить 1С с Autocad

Автор Тема: Хочу подружить 1С с Autocad  (Прочитано 10172 раз)

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

Оффлайн FireballАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Хочу подружить 1С с Autocad
« : 21-03-2019, 19:00:56 »
Добрый день!
Возникла задача получать некоторые данные из Autocad в 1с.
Подключался к Autocad через ком объект из 1с и в принципе все текущие задачи вполне благополучно решал.
Сейчас актуальна задача по вычислению точек привязки размеров. Нашел замечательную тему на этом форуме http://adn-cis.org/forum/index.php?topic=8448.0   и пытаюсь применить подходы оттуда.
Хочу получить .dxf файл. На весь чертеж я его получить могу, но хотелось бы получать его только по необходимым мне объектам. Я так понимаю  сделать это можно 2 способами:
1. с помощью метода export() примерно вот так: Application.ActiveDocument.Export(exportFile, "DXF", sset)
2. Выполнив комманду _dxfout
Но, в первом случаее я наверное неправильно готовлю sset - в файл попадают все объекты, во втором же даже если я пишу куда сохранить у команды - открывается диалоговое окно с выбором места сохранения файла.

Прошу помочь и направить на путь решения проблемы.

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Хочу подружить 1С с Autocad
« Ответ #1 : 21-03-2019, 20:36:11 »
2. Выполнив комманду _dxfout
Обрати внимание, что нужно запускать не команду _DXFOUT, а lisp-выражение вида (command "_DXFOUT" ...), как указано по ссылке.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн FireballАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Хочу подружить 1С с Autocad
« Ответ #2 : 21-03-2019, 21:35:32 »
Пишу вот так, и ничего не создается и даже окошко не вызывается.
Автокад.Application.ActiveDocument.SendCommand ("(command ""_dxfout"" ""C:\\testdxf.dxf"" ""_O""" + " (handent """ + "136" + """)" + " """" """") " )

136 это handle объекта AcDbRotatedDimension

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Хочу подружить 1С с Autocad
« Ответ #3 : 21-03-2019, 21:37:36 »
Пишу вот так, и ничего не создается и даже окошко не вызывается.
Автокад.Application.ActiveDocument.SendCommand ("(command ""_dxfout"" ""C:\\testdxf.dxf"" ""_O""" + " (handent """ + "136" + """)" + " """" """") " )

136 это handle объекта AcDbRotatedDimension
Окошко и не должно вызываться. По поводу вызова из 1C я ничего сказать не могу.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн FireballАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Хочу подружить 1С с Autocad
« Ответ #4 : 21-03-2019, 21:46:58 »
А если прямо в автокаде ввести,

(command "_dxfout" "C:\\testdxf.dxf" "_O" (handent "138") "" "")

то пишет

Команда:
Команда: (command "_dxfout" "C:\\testdxf.dxf" "_O" (handent "138") "" "") _dxfout Введите имя файла DXF <C:\Users\Александр\Desktop\АвтокадоТест\Профиль боковины.dxf>: C:\testdxf.dxf
Текущие настройки DXF: Точность= 16 Формат= ASCII Просмотр= Нет Версия= 2013
Число десятичных знаков (от 0 до 16) или [Двоичный/Объекты/Просмотр/Версия] <16>: _O
Выберите объекты: <Неверное имя объекта: 3F205080>
nil

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Хочу подружить 1С с Autocad
« Ответ #5 : 21-03-2019, 21:52:43 »
то пишет

Команда:
Команда: (command "_dxfout" "C:\\testdxf.dxf" "_O" (handent "138") "" "") _dxfout Введите имя файла DXF <C:\Users\Александр\Desktop\АвтокадоТест\Профиль боковины.dxf>: C:\testdxf.dxf
Текущие настройки DXF: Точность= 16 Формат= ASCII Просмотр= Нет Версия= 2013
Число десятичных знаков (от 0 до 16) или [Двоичный/Объекты/Просмотр/Версия] <16>: _O
Выберите объекты: <Неверное имя объекта: 3F205080>
nil
Видимо у тебя что-то не то с меткой "138". У меня метка примитива для экспорта в dxf "28e":
Код - Visual Basic [Выбрать]
  1. Sub aaa()
  2. Application.ActiveDocument.SendCommand ("(command ""_dxfout"" ""C:\\testdxf.dxf"" ""_O""" + " (handent """ + "28e" + """)" + " """" """") ")
  3. End Sub
  4.  
В командной строке:
Command: (command "_dxfout" "C:\\testdxf.dxf" "_O" (handent "28e") "" "") _dxfout Enter DXF file name <C:\Users\Rivilis-AN\Documents\Drawing1.dxf>: C:\testdxf.dxf
Current DXF settings: Precision= 16 Format= ASCII Preview= No Version= 2018

Enter decimal places of accuracy (0 to 16) or [Binary/select Objects/Preview/Version] <16>: _O
Select objects:   1 found

Select objects:
Enter decimal places of accuracy (0 to 16) or [Binary/Preview/Version] <16>:
Command: nil

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

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Хочу подружить 1С с Autocad
« Ответ #6 : 21-03-2019, 21:54:46 »
AutoCAD какой версии? Если 2013 то возможны проблемы на 64-разрядной Windows.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн FireballАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Хочу подружить 1С с Autocad
« Ответ #7 : 21-03-2019, 22:02:39 »
Александр Ривилис, спасибо за ответы! Автокад 2016. Что то стало создаваться. А сколько примерно должно быть строк у файла? у меня 7754. Не слишком ли много для размера?

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Хочу подружить 1С с Autocad
« Ответ #8 : 21-03-2019, 22:13:12 »
Александр Ривилис, спасибо за ответы! Что то стало создаваться. А сколько примерно должно быть строк у файла? у меня 7754. Не слишком ли много для размера?
Можно задать вывод в формат R12 - будет меньше информации:
Код - Visual Basic [Выбрать]
  1. Sub aaa()
  2. Application.ActiveDocument.SendCommand ("(command ""_dxfout"" ""C:\\testdxf.dxf"" ""_V"" ""_R12""  ""_O""" + " (handent """ + "290" + """)" + " """" """") ")
  3. End Sub
  4.  

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

Оффлайн FireballАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Хочу подружить 1С с Autocad
« Ответ #9 : 22-03-2019, 17:40:14 »
Александр, спасибо за ответы!
Начал парсить файл и столкнулся с новой трудностью)
Привязка размеров сделана к точкам, которые указаны красными стрелками.
Реально ли получить координаты точек, указанных зелеными стрелками?


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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Хочу подружить 1С с Autocad
« Ответ #10 : 22-03-2019, 19:07:28 »
Александр, спасибо за ответы!
Начал парсить файл и столкнулся с новой трудностью)
Привязка размеров сделана к точкам, которые указаны красными стрелками.
Реально ли получить координаты точек, указанных зелеными стрелками?


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

Оффлайн FireballАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Хочу подружить 1С с Autocad
« Ответ #11 : 25-03-2019, 10:16:39 »
Александр, я правильно понимаю, что где-то здесь?
Для удобства я соединил нечетные и четные строки

Код - vb.net [Выбрать]
  1. 100  AcDbDimension
  2. 280  0
  3. 2  *D15
  4. 10  -0.0000000000000339
  5. 20  120.8575579271157
  6. 30  0.0
  7. 11  10.2083333333333
  8. 21  120.8575579271157
  9. 31  0.0
  10. 70  160
  11. 1  d3=2
  12. 71  5
  13. 42  2.000000000000002
  14. 73  0
  15. 74  0
  16. 75  0
  17. 3  ISO-25
  18. 100  AcDbAlignedDimension
  19. 13  -2.000000000000035
  20. 23  125.0
  21. 33  0.0
  22. 14  -0.0000000000000331
  23. 24  135.0
  24. 34  0.0
  25. 100  AcDbRotatedDimension
  26. 1001  ACAD
  27. 1000  DSTYLE
  28. 1002  {
  29. 1070  42
  30. 1040  0.0
  31. 1002  }
  32. 0  DIMENSION
  33. 5  14C
  34. 102  {ACAD_REACTORS
  35. 330  150
  36. 102  }
  37. 330  70
  38. 100  AcDbEntity
  39. 8  1

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Хочу подружить 1С с Autocad
« Ответ #12 : 25-03-2019, 13:22:45 »
Александр, я правильно понимаю, что где-то здесь?
Теоретически - да. Практически нужно исследовать. Если не здесь, то внутри блока *D15
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн FireballАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Хочу подружить 1С с Autocad
« Ответ #13 : 25-03-2019, 14:19:25 »
Спасибо, посмотрю.
Сейчас пытаюсь разобраться, как понять, какой это размер - вертикальный или горизонтальный. Вроде за это отвечает строка которая 51, но по факту как будто бы и нет.

Оффлайн FireballАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Хочу подружить 1С с Autocad
« Ответ #14 : 25-03-2019, 15:24:32 »
Если не здесь, то внутри блока *D15
Да, верно, оно там находится, спасибо!