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

ADN Club => AutoCAD .NET API => Тема начата: Пашин Евгений от 07-09-2015, 08:25:02

Название: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Пашин Евгений от 07-09-2015, 08:25:02
Имеется чертеж с примитивом от CSoft СПДС Graphics.
Требуется иметь возможность управлять (получать и изменять) его параметрами: Масштабом, Стартовой точкой, Ориентацией и Текстовым стилем.

Off-Topic: показать
Ремарка: СПДС GraphiCS – самое известное программное обеспечение среди проектировщиков, чей труд измеряется скоростью выпуска файлов в формате DWG. Свою популярность программа заслужила благодаря простоте и удобству работы при оформлении проектно-конструкторской документации в графической среде AutoCAD за счет интеллектуальных и легкоуправляемых объектов, разработанных с помощью технологии ObjectARX.
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Алексей Кулик от 07-09-2015, 09:16:41
Насколько я помню, у CSoft Development можно было получить справку по объектной модели СПДС GraphiCS. На dwg.ru в Download где-то болталась документация по СОМ-модели СПДС GraphiCS.
P.S. Смысла ремарки не понял от слова "совсем".
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Пашин Евгений от 07-09-2015, 09:20:52
P.S. Смысла ремарки не понял от слова "совсем".

Вдруг кто-нибудь спросит, а что такое СПДС Graphics?
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Алексей Кулик от 07-09-2015, 09:22:57
Off-Topic: показать
Эх, плохо, что я не могу себе позволить холивар ;)
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Александр Пекшев aka Modis от 07-09-2015, 09:43:32
Вот просто не смог удержаться! Да простит меня Александр Наумович!
/* Не прощу! Убирай под тэг оффтоп. Александр Ривилис */
Off-Topic: показать

Правда??? Я как-то один раз поставил сие чудо (и это было лет 7 назад), ужаснулся и снес к чертям. Вот как-раз таки использование ObjectArx (я имею ввиду кастомные примитивы) в "дополнениях" к автокаду - это вообще грех! Ладно, если ты один работаешь и только на бумаге результат выдаешь - еще куда ни шло. Но когда тебе приходится работать с чертежами, некогда сделанными с помощью этого чуда, а потом расчлененных - это просто ужасно! Все обычными отрезками, да еще и в одном цвете! На моей памяти - пользы от СПДС GraphiCS никогда НЕ БЫЛО!
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Пашин Евгений от 07-09-2015, 09:50:11
Спорить не стану, поскольку не работал с СПДС Graphics. Моя цель создать модуль, который определяет параметры (аттрибуты) любых блоков или примитивов и формирует листы для печати в формате PDF. Меня по-большому счету не интересует их происхождение ))) Будь то SPDS от Autodesk или СПДС Graphics, или быть может просто полилиния в виде блока безо всяких параметров и аттрибутов, или, быть может, это динамический блок, являющийся стандартом предприятия... Моя цель не искать их источник, а просто брать их и формировать листы на их основе и перенастроить листы для печати в PDF. Любые.

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

Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Александр Ривилис от 07-09-2015, 12:06:37
Пашин Евгений,
Указанный тобой примитив - Custom Entity.
Соответственно есть несколько вариантов для работы с ними:
1. Если разработчик предоставил .h и .lib файлы для работы при помощи C++ и ObjectARX (спрашивать у разработчика)
2. Разработчик создал и предоставил COM-модель, т.е. как минимум .tlb файл (спрашивать у разработчика)
3. Разработчик создал .NET обертки (спрашивать у разработчика)
4. У примитива есть DXF-коды, в которых есть нужная тебе информация.
Только последний из вариантов не требует взаимодействия с разработчиком, но попахивает хакерством.
Для проверки п. 4 в командной строке AutoCAD набираешь:
Код - Auto/Visual Lisp [Выбрать]
  1. (entget (car (entsel)) '("*"))
И в том, что выдаст тебе AutoCAD ищешь нужную информацию. Если она конечно там есть (может не быть).
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Пашин Евгений от 07-09-2015, 12:19:15
Александр Ривилис,
По пунктам 1,2,3 - нет ничего.
По пункту 4 - не понял... это типа какое-то преступление шариться по DXF-кодам?

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

Если сохранить в формате DXF и пропарсить объекты, то информации гораздо больше! Однако оба варианта - меня не радуют...
Может проще сделать копию этого примитива, взорвать его, и осколки уже изучать? После обработки - все осколки можно удалить...
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Александр Ривилис от 07-09-2015, 12:28:32
По пункту 4 - не понял... это типа какое-то преступление шариться по DXF-кодам?
Нет. Не преступление. Тут полная аналогия с тем, что мы сделали в Как узнать в каком приложении создан dwg-файл? (http://adn-cis.org/forum/index.php?topic=2972.0). Т.е. вроде и работает, но метод не вполне надёжный ибо получен методом реверс-инжиниринга (https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0)
(entget (car (entsel)) '("*")) - работает, но не даёт координаты вставки
Ну значит этот способ отметаем.
Если сохранить в формате DXF и пропарсить объекты, то информации гораздо больше!
Вообще-то приведённый мной lisp-код как раз и позволяет получить dxf-коды.

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

Так что тебе прямая дорога к авторам.
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Пашин Евгений от 07-09-2015, 12:31:20
Например как ты рассчитываешь получить масштаб?

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

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

Что скажут, напишу...
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Алексей Кулик от 07-09-2015, 12:43:06
Если уж вспоминать про лисп, то может и помочь
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-load-com)
  2. (vlax-dump-object (vlax-ename->vla-object (car (entsel))))
Естественно, что дампы (что через entget, что через vlax-dump-object) надо снимать при загруженном СПДС GraphiCS или хотя бы ObjectEnabler.
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Пашин Евгений от 07-09-2015, 12:52:36
Информация после применения команды:

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

Может какие-то другие средства есть? По-большому счету я бы хотел получить формат, точку вставки и масштаб... вполне бы хватило для дальнейших манипуляций.
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Пашин Евгений от 07-09-2015, 12:55:29
Установил СПДС Graphics для AutoCAD 2014 и попробовал изменить параметры рамки вручную... хм, MODIS был прав - ерунда какая-то получается )))

Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Александр Ривилис от 07-09-2015, 12:55:56
Может какие-то другие средства есть?
Нет.
Информация после применения команды:
Судя по протоколу ничего интересного об этом объекте ты не узнаешь.
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Пашин Евгений от 07-09-2015, 12:57:13
Судя по протоколу ничего интересного об этом объекте ты не узнаешь.

А если бы я программировал под Object ARX, я бы  смог с этого объекта взять какие-нибудь параметры?
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Александр Ривилис от 07-09-2015, 12:58:06
А если бы я программировал под Object ARX, я бы  смог с этого объекта взять какие-нибудь параметры?
Нет. Смотри п.1:
1. Если разработчик предоставил .h и .lib файлы для работы при помощи C++ и ObjectARX (спрашивать у разработчика)
Название: Re: Как программно изменить параметры ПРИМИТИВА СПДС Graphics?
Отправлено: Пашин Евгений от 07-09-2015, 12:59:41
Цитата: Александр Ривилис от 07-09-2015, 12:06:37
1. Если разработчик предоставил .h и .lib файлы для работы при помощи C++ и ObjectARX (спрашивать у разработчика)

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