Можно ли каким-нибудь образом получить тип используемого документа? Под типом понимается - чертеж, деталь, сборка. Судя по API, объектной модели документа и однотипному расширению файлов документов (.grb) создаётся ощущение, что это совсем не просто сделать... Или, возможно, это закрытое свойство/метод документа (может его реально через рефлекшн получить?)
Заметил вот такое:
когда создаёшь новую деталь, открывается вкладка "3D модель",
когда создаешь чертеж/спецификацию/2D деталь/3D деталь. открывается вкладка "Чертеж",
когда создаешь сборку, открывается вкладка "Сборка".
Вероятно, "под капотом" всё же TFlex знает, что за тип документа выбран? Или по нажатию определенной команды (например "Создать->Деталь") активируется определенная вкладка ленты?
tucha.te написал: Можно ли каким-нибудь образом получить тип используемого документа?
возможно вы имели ввиду определить прототип документа (шаблон), из которого создается новый документ. Нужно смотреть различие в прототипах.
Думаю, что это то, что мне и нужно! Не могли бы Вы, пожалуйста, подсказать, какими образом у документа узнать шаблон/прототип, по которому он был создан?
Может ли пользователь создавать свои шаблоны? Путь к этим шаблонам всегда схож?
SwnSerg написал: какими образом у документа узнать шаблон/прототип, по которому он был создан?
я думаю все имеющиеся прототипы были созданы в рамках единой объектной модели документа. отличие возможно в конфигурации прототипа, да и сам прототип это тот же документ. фактически, система создает копию из прототипа как новый документ.
Цитата
SwnSerg написал: Может ли пользователь создавать свои шаблоны?
может
Цитата
SwnSerg написал: Путь к этим шаблонам всегда схож?
SwnSerg написал: какими образом у документа узнать шаблон/прототип, по которому он был создан?
я думаю все имеющиеся прототипы были созданы в рамках единой объектной модели документа. отличие возможно в конфигурации прототипа, да и сам прототип это тот же документ. фактически, система создает копию из прототипа как новый документ.
Цитата
SwnSerg написал: Может ли пользователь создавать свои шаблоны?
может
Цитата
SwnSerg написал: Путь к этим шаблонам всегда схож?
Не поможет, прототип - это готовый шаблон. Не до конца сформулирована задача. Если чертеж на деталь оформлен в одном файле с многотельной 3D моделью это что? Чертеж? Деталь? Или Сборка? Лучше опиши какую задачу решаешь.
SwnSerg написал: А можно ли у класса Document каким-либо образом узнать по какому прототипу он был создан?
по-умолчанию, метод "TFlex.Application.NewDocument()" создает "2D Деталь". если я не ошибаюсь, это базовый документ, из которого создается прототип. то есть, вы можете добавить стандартные рабочие плоскости и сохранить "2D Деталь" как, "3D Деталь" или "3D Сборка". различие между документами в конфигурации: параметры документа, настройка служебных переменных, основной вид по-умолчанию, и т.д. какой-то специальный тип данных в API, связанный с определением прототипа документа, я не обноружил.
zobza написал: Не поможет, прототип - это готовый шаблон. Не до конца сформулирована задача. Если чертеж на деталь оформлен в одном файле с многотельной 3D моделью это что? Чертеж? Деталь? Или Сборка? Лучше опиши какую задачу решаешь.
Можно ли по созданному документу определить 3D модель это или чертеж? В зависимости от этого признака меняется набор команд плагина
SwnSerg написал: Можно ли по созданному документу определить 3D модель это или чертеж?
3D модель можно определить по контейнеру рабочих плоскостей, например:
Код
Document document = TFlex.Application.OpenDocument(path);
if (document.GetWorkplanes().Count > 0)
{
// .. 3D Модель
}
else
{
// .. 2D Модель
}
определить чертеж или сборка, можно по параметрам служебной переменной
Код
switch (document.FindVariable("$Vid_Chert").TextValue)
{
case "Чертеж":
// .. Чертеж
break;
case "Сборочный чертеж":
// .. Сборка
break;
case "Чертеж общего вида":
break;
case "Монтажный чертеж":
break;
case "Теоретический чертеж":
break;
case "Габаритный чертеж":
break;
case "Электромонтажный чертеж":
break;
case "Упаковочный чертеж":
break;
}
zobza написал: Не поможет, прототип - это готовый шаблон. Не до конца сформулирована задача. Если чертеж на деталь оформлен в одном файле с многотельной 3D моделью это что? Чертеж? Деталь? Или Сборка? Лучше опиши какую задачу решаешь.
Можно ли по созданному документу определить 3D модель это или чертеж? В зависимости от этого признака меняется набор команд плагина
Это не или, это 2 разные задачи. И пример Vite это наглядно показывает. Может тебе нужно в зависимости от контекста работы кнопки менять? Что хоть плагин делает? Для чего он?
zobza написал: Не поможет, прототип - это готовый шаблон. Не до конца сформулирована задача. Если чертеж на деталь оформлен в одном файле с многотельной 3D моделью это что? Чертеж? Деталь? Или Сборка? Лучше опиши какую задачу решаешь.
Можно ли по созданному документу определить 3D модель это или чертеж? В зависимости от этого признака меняется набор команд плагина
Это не или, это 2 разные задачи. И пример Vite это наглядно показывает. Может тебе нужно в зависимости от контекста работы кнопки менять? Что хоть плагин делает? Для чего он?
Немного не понял про то, что это две разные задачи... Приведу пример - в API Solidworks есть такое свойство у документа - DocumentType, по которому я могу чётко определить с чем я работаю - деталью, сборкой или чертежом. Судя по всему, в TFlex так просто тип документа не получить, потому что сама объектная модель сильно отличается.
Хз как там в АПИ, но сам тип документа у Флекса один и тот же. Если есть 3Д, и нет форматок, то это просто Деталь, если есть форматки, то это чертёж и деталь, если есть фрагменты в 3Д, то это сборка, прототипы тут не при чём. Самый прикол, что и это не факт! Я иногда делаю деталь, а потом решаю, что будет сборка. Бывает в сборке все чертежи всех деталей. Бывает 3Д отдельно от 2Д, но правда редко. Бывает деталь, но с фрагментами. Нужно ввести переменную, которая будет чётко давать понять, что именно перед нами. Но задача не ясна, решения не будет, по началу мне показалось, что нужно просто чтоб плагин различал 3Д и 2Д, а тут ещё и сборки...сборки кстати бывают и 2Д....
Sila Musli написал: Хз как там в АПИ, но сам тип документа у Флекса один и тот же. Если есть 3Д, и нет форматок, то это просто Деталь, если есть форматки, то это чертёж и деталь, если есть фрагменты в 3Д, то это сборка, прототипы тут не при чём. Самый прикол, что и это не факт! Я иногда делаю деталь, а потом решаю, что будет сборка. Бывает в сборке все чертежи всех деталей. Бывает 3Д отдельно от 2Д, но правда редко. Бывает деталь, но с фрагментами. Нужно ввести переменную, которая будет чётко давать понять, что именно перед нами. Но задача не ясна, решения не будет, по началу мне показалось, что нужно просто чтоб плагин различал 3Д и 2Д, а тут ещё и сборки...сборки кстати бывают и 2Д....
если у вас получится мне написать, каким образом со 100% вероятностью определить - 3D модель представляет документ или чертеж - я буду очень благодарен!
Sila Musli написал: Хз как там в АПИ, но сам тип документа у Флекса один и тот же. Если есть 3Д, и нет форматок, то это просто Деталь, если есть форматки, то это чертёж и деталь, если есть фрагменты в 3Д, то это сборка, прототипы тут не при чём. Самый прикол, что и это не факт! Я иногда делаю деталь, а потом решаю, что будет сборка. Бывает в сборке все чертежи всех деталей. Бывает 3Д отдельно от 2Д, но правда редко. Бывает деталь, но с фрагментами. Нужно ввести переменную, которая будет чётко давать понять, что именно перед нами. Но задача не ясна, решения не будет, по началу мне показалось, что нужно просто чтоб плагин различал 3Д и 2Д, а тут ещё и сборки...сборки кстати бывают и 2Д....
если у вас получится мне написать, каким образом со 100% вероятностью определить - 3D модель представляет документ или чертеж - я буду очень благодарен!
Опиши, хотя бы примерно, что делает твой плагин, писать плагины ради плагинов немного неправильно. Я имею ввиду не просто кнопки появляются и меняются, а что за кнопки и зачем они.