Как программно изменить параметры ПРИМИТИВА СПДС Graphics?

Автор Тема: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?  (Прочитано 10709 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Имеется чертеж с примитивом от CSoft СПДС Graphics.
Требуется иметь возможность управлять (получать и изменять) его параметрами: Масштабом, Стартовой точкой, Ориентацией и Текстовым стилем.

Off-Topic: показать
Ремарка: СПДС GraphiCS – самое известное программное обеспечение среди проектировщиков, чей труд измеряется скоростью выпуска файлов в формате DWG. Свою популярность программа заслужила благодаря простоте и удобству работы при оформлении проектно-конструкторской документации в графической среде AutoCAD за счет интеллектуальных и легкоуправляемых объектов, разработанных с помощью технологии ObjectARX.
« Последнее редактирование: 07-09-2015, 12:23:14 от Пашин Евгений »

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Насколько я помню, у CSoft Development можно было получить справку по объектной модели СПДС GraphiCS. На dwg.ru в Download где-то болталась документация по СОМ-модели СПДС GraphiCS.
P.S. Смысла ремарки не понял от слова "совсем".
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
P.S. Смысла ремарки не понял от слова "совсем".

Вдруг кто-нибудь спросит, а что такое СПДС Graphics?

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Off-Topic: показать
Эх, плохо, что я не могу себе позволить холивар ;)
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Вот просто не смог удержаться! Да простит меня Александр Наумович!
/* Не прощу! Убирай под тэг оффтоп. Александр Ривилис */
Off-Topic: показать

Правда??? Я как-то один раз поставил сие чудо (и это было лет 7 назад), ужаснулся и снес к чертям. Вот как-раз таки использование ObjectArx (я имею ввиду кастомные примитивы) в "дополнениях" к автокаду - это вообще грех! Ладно, если ты один работаешь и только на бумаге результат выдаешь - еще куда ни шло. Но когда тебе приходится работать с чертежами, некогда сделанными с помощью этого чуда, а потом расчлененных - это просто ужасно! Все обычными отрезками, да еще и в одном цвете! На моей памяти - пользы от СПДС GraphiCS никогда НЕ БЫЛО!
« Последнее редактирование: 07-09-2015, 11:57:22 от Александр Ривилис »

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Спорить не стану, поскольку не работал с СПДС Graphics. Моя цель создать модуль, который определяет параметры (аттрибуты) любых блоков или примитивов и формирует листы для печати в формате PDF. Меня по-большому счету не интересует их происхождение ))) Будь то SPDS от Autodesk или СПДС Graphics, или быть может просто полилиния в виде блока безо всяких параметров и аттрибутов, или, быть может, это динамический блок, являющийся стандартом предприятия... Моя цель не искать их источник, а просто брать их и формировать листы на их основе и перенастроить листы для печати в PDF. Любые.

У данного примитива я не смог отыскать параметры... поэтому обратился сюда. Переписываюсь с консультантом от СПДС Graphics. Пока не услышал от него ответа, как точно выполнить это простое действие.


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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Пашин Евгений,
Указанный тобой примитив - Custom Entity.
Соответственно есть несколько вариантов для работы с ними:
1. Если разработчик предоставил .h и .lib файлы для работы при помощи C++ и ObjectARX (спрашивать у разработчика)
2. Разработчик создал и предоставил COM-модель, т.е. как минимум .tlb файл (спрашивать у разработчика)
3. Разработчик создал .NET обертки (спрашивать у разработчика)
4. У примитива есть DXF-коды, в которых есть нужная тебе информация.
Только последний из вариантов не требует взаимодействия с разработчиком, но попахивает хакерством.
Для проверки п. 4 в командной строке AutoCAD набираешь:
Код - Auto/Visual Lisp [Выбрать]
  1. (entget (car (entsel)) '("*"))
И в том, что выдаст тебе AutoCAD ищешь нужную информацию. Если она конечно там есть (может не быть).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Александр Ривилис,
По пунктам 1,2,3 - нет ничего.
По пункту 4 - не понял... это типа какое-то преступление шариться по DXF-кодам?

Команда:
(entget (car (entsel)) '("*")) - работает, но не даёт координаты вставки

Если сохранить в формате DXF и пропарсить объекты, то информации гораздо больше! Однако оба варианта - меня не радуют...
Может проще сделать копию этого примитива, взорвать его, и осколки уже изучать? После обработки - все осколки можно удалить...

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
По пункту 4 - не понял... это типа какое-то преступление шариться по DXF-кодам?
Нет. Не преступление. Тут полная аналогия с тем, что мы сделали в Как узнать в каком приложении создан dwg-файл?. Т.е. вроде и работает, но метод не вполне надёжный ибо получен методом реверс-инжиниринга
(entget (car (entsel)) '("*")) - работает, но не даёт координаты вставки
Ну значит этот способ отметаем.
Если сохранить в формате DXF и пропарсить объекты, то информации гораздо больше!
Вообще-то приведённый мной lisp-код как раз и позволяет получить dxf-коды.

Может проще сделать копию этого примитива, взорвать его, и осколки уже изучать? После обработки - все осколки можно удалить...
Сомневаюсь, что ты сможешь по этим "осколкам" получить нужную тебе информацию. Например как ты рассчитываешь получить масштаб?

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

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Например как ты рассчитываешь получить масштаб?

Ах, про него-то и забыл...

Так что тебе прямая дорога к авторам.

Что скажут, напишу...

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Если уж вспоминать про лисп, то может и помочь
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-load-com)
  2. (vlax-dump-object (vlax-ename->vla-object (car (entsel))))
Естественно, что дампы (что через entget, что через vlax-dump-object) надо снимать при загруженном СПДС GraphiCS или хотя бы ObjectEnabler.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Информация после применения команды:

Command: (vl-load-com)

Command: (vlax-dump-object (vlax-ename->vla-object (car (entsel))))

Select object: ; IAcadEntity: AutoCAD Entity Interface
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00007ff6cc98d910>
;   Document (RO) = #<VLA-OBJECT IAcadDocument 000000003f86e7e8>
;   EntityTransparency = "ByLayer"
;   Handle (RO) = "4F47"
;   HasExtensionDictionary (RO) = 0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000000002fc26308>
;   Layer = "0"
;   Linetype = "ByLayer"
;   LinetypeScale = 100.0
;   Lineweight = -1
;   Material = "ByLayer"
;   ObjectID (RO) = 45
;   ObjectID32 (RO) = 45
;   ObjectName (RO) = "mcsDbObjectFormat"
;   OwnerID (RO) = 46
;   OwnerID32 (RO) = 46
;   PlotStyleName = "ByLayer"
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 000000002fc26b40>
;   Visible = -1

Может какие-то другие средства есть? По-большому счету я бы хотел получить формат, точку вставки и масштаб... вполне бы хватило для дальнейших манипуляций.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Установил СПДС Graphics для AutoCAD 2014 и попробовал изменить параметры рамки вручную... хм, MODIS был прав - ерунда какая-то получается )))


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

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

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Судя по протоколу ничего интересного об этом объекте ты не узнаешь.

А если бы я программировал под Object ARX, я бы  смог с этого объекта взять какие-нибудь параметры?

Отмечено как Решение Пашин Евгений 17-09-2015, 14:32:01

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А если бы я программировал под Object ARX, я бы  смог с этого объекта взять какие-нибудь параметры?
Нет. Смотри п.1:
1. Если разработчик предоставил .h и .lib файлы для работы при помощи C++ и ObjectARX (спрашивать у разработчика)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Цитата: Александр Ривилис от 07-09-2015, 12:06:37
1. Если разработчик предоставил .h и .lib файлы для работы при помощи C++ и ObjectARX (спрашивать у разработчика)

Спасибо, все понятно.