Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Глобальные базовые линии, Плагин
 
Хочу представить вашему вниманию команду “Глобальные базовые линии», разработанную в виде плагина к T-FLEX CAD.

При выполнении команды на всех рабочих плоскостях создаются две, взаимно-перпендикулярные линии построения, проходящие через проекцию 3D узла с координатами (0,0,0), бесконечной длины, красного цвета, зафиксированные от смещения и изменения. Если, при вызове команды, на какой-либо рабочей плоскости базовые линии уже были построены - то повторно на этой плоскости линии не создаются. Линии создаются на всех рабочих плоскостях, не зависимо от способа их создания. Линии остаются на месте даже после перемещения рабочей плоскость и ее поворота.

Для подключения плагина распакуйте архив в T-FLEX CAD 15 x64\Program\
Запустите плагин: Настройки\Приложения\Добавить\.... Глобальные базовые линии

В качестве пояснения.
В судостроении (думаю и в других отраслях, где проектируются крупные объекты) все построения в модели должны выполняться от «Базовых линий», построенных на точке с координатами 0,0,0 (назовем ее «Нулевая точка»). В судостроении это пересечение трех плоскостей: нулевого шпангоута (0 шп.), основной (ОП) и диаметральной (ДП) плоскостей. Это очень удобно, т. к. созданные на любой плоскости построения всегда согласуются с построениями, созданными на других плоскостях. А плоскостей в модели судна (корабля) достаточно много — по числу шпангоутов, палуб и ярусов надстройки - несколько десятков. При создании построений относительно «нулевой точки» отсутствует связь «родитель-потомок». Модель становится простой, надежной, требующей значительно меньшего времени на пересчет.

Функционал команды описывал в своих предложениях несколько раз, начиная с 2003 года. Но, как то не получалось убедить техподдержку и разработчиков в необходимости нового инструмента (допускаю, что не хватило в то время красноречия). Получал ответы типа «Базовых линий в трехмерной модели может быть неограниченное количество». Поэтому приходилось “колхозить», используя прототипы: создавать на трех рабочих плоскостях свои «Базовые линии» при помощи команды «Прямая» и опции в Автоменю «Создать линии построения и узел в точке (0, 0)», раскрашивать линии красным цветом (чтобы их выделить относительно других построений) и присваивая для линий параметр «Длина» - «Бесконечная». Но, таким образом можно было создать «Базовые линии» только для трех предопределенных рабочих плоскостей, а для вновь построенных — производить эту муторную череду действий заново. Также была одна проблема - «Базовые линии» можно было случайно сдвинуть — и вся идея создания построений относительно абсолютного нуля трехмерной модели перечеркивалась.
Слава разработчикам за T-FLEX CAD API — появился инструмент, позволяющий реализовывать свои идеи программно.
Изменено: Сергей Максимов - 02.04.2018 22:39:32
"Подводные камни" водозаборных скважин и колодцев, Хочу поделиться своим четырехлетним опытом в этой отрасли с теми, кто планирует водозабор на даче или в доме, а также рассказать как дурят заказчиков буровые компании.
 
Хочу поделиться своим четырехлетним опытом в этой отрасли с теми, кто планирует водозабор на даче или в доме, а также рассказать как дурят заказчиков буровые компании.
Небольшая предыстория. Началось все 4,5 года назад, когда устроился в проектное бюро, специализирующееся на проектировании в области судостроения. Сейчас занимаемся выпуском РКД на судно (в интересах какого ведомства сообщать не буду :)), а тогда писали различные концепты. Были у нас в тот период две пары тем, связанных с геологоразведкой на море. Обе темы для меня оказались чрезвычайно интересными. Думаю, если бы встал вопрос о получении второго высшего, то пошел бы на геолога :).
Т.к. в проектировании судов (речь именно о проектировании, а не о строительстве) в то время был новичком, убедить коллег выполнять проекты в T-Flex CAD не хватило аргументов. Поэтому пришлось на 4 года пересесть на Автокад. По сути у меня "отобрали любимую игрушку" - T-Flex, который был для меня всегда лучше любого хобби. Поработав несколько месяцев в этом стремном автогаде, понял, что так закисну напрочь в этой компании - все равно, что  в Пэйнте работать.
А тут как раз друг, устав от бесконечной аренды квартир переехал жить в дачный кооператив. Ну естественно, переехав из города фактически в сельскую местность, не хочется отказываться от городского комфорта. Закопал он септик, поставил городскую душевую и туалет, смонтировал в доме водопровод, а воду начал возить из города во флягах. Через несколько месяцев ему это надоело и встал вопрос об организации водоснабжения его дома, а именно закладки водозаборной скважины. Вызвав пару буровых команд, которые пробурить грунт возле его дома не смогли, обратился в геологоразведку. Там его поставили на очередь - через два года.
С этой проблемой он ко мне и обратился и, в конце концов, сагитировал на постройку буровой установки, чтобы пробурить в его СНТ скважину. Установку построили, скважину пробурили, потом организовали ООО пробурили еще десятка два скважин в этом районе. По ходу изучали геологию, гидрологию своего района, общались с опытными инженерами-буровиками. Вообщем, новое хобби затянуло по полной. Приобретя опыт и повертевшись в этом бизнесе, особенно видя как коллеги-конкуренты дурят заказчиков, написал вначале статью на специализированном форуме, а потом создали информационно-просветительский сайт (некоммерческий) с целью проведения ликбеза потенциальных владельцев скважин.

Думаю люди, посещающий данный форум, живут не только CAD-системами, у них также есть дачи, загородные дома и рано или поздно, но они столкнутся с темой водоснабжения дома. Так что информацию, которую собираюсь здесь предложить, думаю, некоторым посетителям форума может пригодится. К тому же этот раздел позволяет общаться на разные темы. Никакой коммерческой выгоды этим постом для себя не преследую. Тем более, что приобретя опыт проектирования в судостроении у меня теперь появились весомые аргументы для использования T-Flex в судостроении :). Уже пол-года как удалось отпинаться от автогада и использовать вместо него любимую программу. Да и коллеги, и начальники, теперь уже не так категоричны, что 4 года назад :). Бурение скважин теперь отходит на второй план, да и семье не особо нравится, когда практически все выходные (бурим или пропадаем в гараже почти круглый год) меня нет дома.

Тем, кому интересна тема водоснабжения загородного дома можете посетить указанный сайт по адресу - [URL=http://воданасевере.рф/]http://воданасевере.рф/[/URL] (в названии - не оригинален :))
Макрос для управления пересчетом проекций тяжелых сборок.
 
Не так давно устроился, в качестве консультанта по продуктам T-Flex,  по совместительству в одну компанию, занимающуюся проектированием и строительством изделий из металлоконструкций. Приходится разбираться с различными проблемами, в т.ч. и при работе с большими сборками. В компании используется 14-я версия када, но отдельные работы уже выполняются в 15-й версии (не сторонник гонки за обновлениями, поэтому пока сидят в 14-й).
Понаблюдав за пользователями заметил их скучающие взгляды на мониторы и решил разобраться, почему у них все время что-то пересчитывается. Сам последние годы работал в 12-й версии T-Flex CAD (на основной работе закуплена именно эта версия) и был неприятно удивлен новшеству, появившемуся в 14, 15 версиях, а именно - автоматическому пересчету проекций, например, при подавлении операций в 3D. Причем эту фишку никак нельзя отключить.
Конечно же сразу написал в техподдержку об этой проблеме и надеюсь на ее скорое разрешение. Понятно, что для решения этой задачи техподдержке и разработчикам потребуется какое-то время, поэтому нашел выход в написании макроса, который будет изменять параметр обновления всех проекций документа на "Только вручную", и по запросу пользователя обновлять все проекции документа.
Макрос состоит из двух модулей.[COLOR=#000080]
[/COLOR][COLOR=#000080]
[/COLOR][B]Модуль 1: ОтключитьАвтообновлениеПроекций[/B]
[CODE]using System;
using TFlex.Model;
using TFlex.Model.Model2D;
using TFlex.Model.Model3D;

namespace NewMacroNamespace
{
public class ОтклАвтообновлениеПроекций
{
public static void ОтключитьАвтообновлениеПроекций()
{
Document document = TFlex.Application.ActiveDocument;

if(document != null)
        {
document.BeginChanges("Отключить автообновление проекций");

// Последовательный перебор проекций документа
foreach(Projection pr in document.GetProjections())
{
// Приведение типа Projection к тиу SimpleDrawingProjection
SimpleDrawingProjection spr = pr as SimpleDrawingProjection;

// Если проекция существует и режим ее пересчета установлен отличным от "Только вручную"
if (spr != null && spr.RegenerationMode != RegenerationMode.ManualOnly)
{
// Установить режим пересчета проекции "Только вручную"
spr.RegenerationMode = RegenerationMode.ManualOnly;
}
}
}

document.EndChanges();
}
}
}
[/CODE][B]Модуль 2: ОбновитьВсеПроекции[/B]
[CODE]using System;
using TFlex.Model;
using TFlex.Model.Model2D;
using TFlex.Model.Model3D;

namespace NewMacroNamespace
{
public class ОбновитьПроекции
{
public static void ОбновитьВсеПроекции()
{
Document document = TFlex.Application.ActiveDocument;

if(document != null)
        {

document.BeginChanges("Обновить все проекции");

// Последовательный перебор проекций документа
foreach(Projection pr in document.GetProjections())
{
// Приведение типа Projection к тиу SimpleDrawingProjection
SimpleDrawingProjection spr = pr as SimpleDrawingProjection;

// Если проекция существует и режим ее пересчета установлен отличным от "Автоматически"
if (spr != null && spr.RegenerationMode != RegenerationMode.Automatic)
{
// Установить режим пересчета проекции "Автоматически"
spr.RegenerationMode = RegenerationMode.Automatic;
}
}

// Выполнить полный пересчет документа
RegenerateOptions rg = new RegenerateOptions();
rg.Full = true;
document.Regenerate(rg);

// Последовательный перебор проекций документа
foreach(Projection pr in document.GetProjections())
{
// Приведение типа Projection к тиу SimpleDrawingProjection
SimpleDrawingProjection spr = pr as SimpleDrawingProjection;

// Если проекция существует и режим ее пересчета установлен отличным от "Только вручную"
if (spr != null && spr.RegenerationMode != RegenerationMode.ManualOnly)
{
// Установить режим пересчета проекции "Только вручную"
spr.RegenerationMode = RegenerationMode.ManualOnly;
}
}

document.EndChanges();
}
}
}
}

[/CODE]К сообщению прикладываю файл с макросом. Файл нужно скопировать в следующую папку: [B]C:\Program Files\T-FLEX CAD 14 x64\Program\Macros\
[/B][B]
[/B]P.S. Результат работы макроса. Действия, выполняемые в 3D не приводят к пересчету проекций, файл открывается быстрее, проекции по листу документа перемещаются без пересчета. Как и прежде (в 12 версии) - решение об обновлении проекций остается за пользователем. Причем макрос действует одинаково как на обычные проекции, так и на выносные виды (у которых настройку свойства обновления, в обычном случае, без использования макроса, еще нужно поискать :) )[B]
[/B]
Изменено: Сергей Максимов - 26.07.2017 23:32:14
Базовый класс групп трансформаций, Трансформация 3D элементов
 
У кого нибудь есть опыт применения TransformationGroupBase?
Задача следующая. Написан макрос создания рабочей плоскости, построенной на странице.

[CODE]using System;
using TFlex.Model;
using TFlex.Model.Model2D;
using TFlex.Model.Model3D;

namespace NewMacroNamespace
{
public class NewMacroClass
{
public static void NewMacro()
{
//Получение активного документа
Document document = TFlex.Application.ActiveDocument;

//Открытие блока изменений документа
document.BeginChanges("Создание рабочей плоскости");

//Создание объекта страницы
Page currentPage = new Page(document);

// Присвоение странице типа "Рабочая плоскость"
currentPage.PageType = PageType.Workplane;

// Создание объекта рабочей плоскости
WP wp = new WP(document, currentPage.Document.ActivePage);

// Показать рабочую плоскость на 3D
       wp.ShowOn3D = true;

//Закрытие блока изменений документа
document.EndChanges();
}
}

   public class WP : Workplane
   {
       // Сводка:
       //     Конструктор для создания новой рабочей плоскости
       //
       // Параметры:
       //   Doc:
       //     Документ, в котором создаётся новый объект
       //
       // Примечания:
       //     Рабочая плоскость создаётся на активной странице
       public WP(Document Doc)
           : base(Doc)
       {


       }
       //
       // Сводка:
       //     Конструктор для создания новой рабочей плоскости
       //
       // Параметры:
       //   Doc:
       //     Документ, в котором создаётся новый объект
       //
       //   page:
       //     Страница, на которой создаётся рабочая плоскость
       public WP(Document Doc, Page page)
           : base(Doc, page)
       {

       }
   }
}
[/CODE]Страница, как это и следовало ожидать, строится согласно своей системе координат, т.е. в плоскости XY глобальной системы координат.

Необходимо развернуть рабочую плоскость по оси Z на 180 градусов. Класс трансформаций в 14-й версии, если правильно понял - общий. Он абстрактный, конструктор не определен. У кого-нибудь есть пример выполнения трансформаций?
Заранее благодарен за ответ.
Изменено: Сергей Максимов - 17.09.2014 17:23:18
О начальниках и подчиненных, Взаимоотношения руководителей и их подчиненных
 
[LEFT] Инструкция по приобретению инженеров и уходу за ними.

Введение. (К сведению начинающих инженерозаводчиков )

Прежде, чем приобрести особь этого милого, но своенравного зверька, будущий инженерозаводчик должен осознать всю степень ответственности за животное, занесенное в Красную Книгу.

Выбор инженера

Конечно, выгоднее начинать инженерозаводческое дело с приобретения взрослых особей. Однако, следует знать, что еще в достарческом возрасте многие особи инженеров (вследствие тонкой психологической структуры) подвержены болезням мозга. Подобная предрасположенность может негативно отразиться как на поведенческих, так и на трудовых качествах Вашего питомца. С другой стороны, приобретение юных неокрепших экземпляров также чревато последствиями. Тем более, что современные ВУЗы, не вызывающие доверия экспертов в области инженерологии, изобилуют предложениями по продаже молодых, якобы производительных особей. И все-таки, если Вы решились завести молодую особь инженера с перспективой на дальнейшее размножение, необходимо провести ряд простейших тестов.
- Жизнеспособный инженер должен иметь достаточно ясное представление о том, почему светит лампа, отчего в холодильнике долго не протухают продукты и как пользоваться нониусом.
- Если инженер точно знает, как выглядит атом, или способен полдня бегать по институту в поисках Петровича, который нальет ведро электричества – то данная особь немедленно должна быть подвергнута выбраковке.
Кроме того, следует определиться - особь какого пола Вы хотели бы приобрести (заводить одновременно особей обоих полов не стоит, т. к. возможное потомство от внутривидовых связей малопригодно для жизни и может стать помехой для деятельности Ваших питомцев). Многие начинающие инженерозаводчики опасаются заводить самочек детородного возраста, поскольку последние склонны уделять больше внимания своей семье, нежели хозяину. Это одна из самых распространенных ошибок. Самочка, заботящаяся о своем потомстве, более склонна к приручению, чем иные особи
(исключение составляют лишь те самочки, о пропитании потомства которых заботятся их самцы-не инженеры).
Заводить молодого самца инженера не менее рискованно. Изначально склонные к размножению и, быть может, более других видов сознающие свою ответственность перед подрастающим поколением, инженеры-самцы способны совершить побег из своей уютной клетки, если того потребуют их семейные обстоятельства. Таким образом, выбор особи следует производить согласно своим
возможностям:
     - инженерозаводчик должен определиться – сколько инженеров он может прокормить;
     - скольких расселить по отдельным клеточкам
     - и сколько внимания он способен уделить каждой особи в отдельности (инженеры суть зверьки капризные и требующие ласки).
Итак, мы плавно перешли к следующей теме – уходу за инженерами.

Уход за инженером.

Как уже говорилось ранее, инженер – зверек капризный и непредсказуемый.Любое проявление невнимания к его персоне (недостаточно калорийное питание, не очень тщательно вычищенный туалет, повышенный голос хозяина и т. д.) приводит к ощущению дискомфорта и, как следствие, к попытке побега из вольера. Как правило, этот забавный зверек не сбегает неожиданно. Животные инстинкты заставляют его как бы предупреждать хозяина о своем намерении (путем обильного выделения феромонов, заявления об увольнении и т. п.).
Если инженерозаводчик заинтересован в дальнейшем разведении инженеров, то удержать взбунтовавшееся животное в привычном ареале довольно-таки просто: достаточно только погладить Вашего питомца по шерстке и прикормить чем-нибудь вкусненьким. Но к прикормке нужно относиться осторожно, т. к. слишком обильное питание может вызвать у Вашего питомца несварение желудка и потерю деловой активности. Вообще, кормление инженера – дело ответственное, и начинающему инженерозаводчику было бы нелишним иметь консультанта по данному вопросу. Однако, консультанты столь же редкие животные, как и сами инженеры.Поэтому изложим основные рекомендации по кормлению Вашего питомца.
     - Ни в коем случае не закармливайте инженера! Большой заработок, социальные блага, слишком хорошо оборудованная клетка могут принести непоправимый ущерб умственному здоровью Вашего питомца. При этом периодически подкармливайте зверька обещаниями повышения заработной платы, приобретения новых аппаратов и регулярно убеждайте в том, что работа его (и всей вашей организации) востребована.
     - Нельзя также запрещать этому парадоксальному животному время от времени питаться на стороне. Пища, подбираемая инженером на улице, просто необходима для его желудка и нормального мозгового кровообращения.
     - Особое внимание следует уделять гигиене Вашего любимца. Инженер – животное брезгливое, поэтому не стоит слишком часто заставлять его гнать откровенную халтуру: инженер любит, чтобы лапки его оставались чистыми. Замарав лапки, инженер долго вылизывается и обижается на хозяина. Однако, Вы можете вновь завоевать доверие своего питомца путем подкормки.
     - Не забывайте подтачивать коготки инженеру – несмотря на внешнюю безобидность, этот зверек достаточно агрессивен. Обиженный инженер способен весьма серьезно навредить хозяину (написать в ботинок, не выполнить работу в срок и т. п.).
     - Кроме того, необходимо периодически чистить инженеру ушки, закапывать глазки и проверять основные рефлексы. На профессиональном жаргоне инженерозаводчиков эти процедуры называются "профосмотр".
     - И последнее. Если этот противный, неблагодарный зверек все-таки сбежал из вольера, предварительно нагадив в углу, задумайтесь – следует ли Вам и далее продолжать заниматься разведением инженеров или же приобрести другой (более выгодный и менее рискованный) бизнес.
[/LEFT]
Реальность, Реальность - это совсем не то, что Вы думаете.
 
Очень интересный документальный фильм: [URL=http://1kino.com/documental/2369-dengi-piramida-dolgov.html]Деньги - пирамида долгов.[/URL]
Конфигурации библиотек
 
Кто-нибудь знает как создать через API новую конфигурацию библиотеки, а затем создать в ней новые библиотеки?

LibraryConfiguration newLibConf = new LibraryConfiguration("New",@"D:\new.tws");

Так конфигурацию создать не получается.

Library newLib = new Library("Библиотека", @"D:\Проекты\Сборка\Библиотека"); - а так библиотеку.

По логике нужно открыть блок редактирования, как в случае с документом, но ведь это не относится к документу. Потом при создании библиотеки по идее нужно указать в какой конфигурации ее необходимо создать. В документации по API примеров не нашел.
Взавка 3D Изображения
 
Не отображается 3D изображение после втавки через API

Document doc = TFlex.Application.OpenDocument(@"D:\1.grb");

doc.BeginChanges("");

//Вариант со ссылкой
FileLink fl = new FileLink(doc, @"D:\2.grb");
Picture3D newPict = new Picture3D(fl);

//Вариант с путем к файлу
Picture3D pict = new Picture3D(doc);
pict.FileName = @"D:\2.grb";

doc.EndChanges();

Это тоже самое, если при вставке 3D изображения выбирать путь к файлу в окне свойств, а не в Автоменю

В случае программной вставки и в случае указания файла с с 3D изображением в окне свойств после завершения операции вставки - для того, чтобы 3D изображение отобразилось, необходимо выполнить команду "Изменить" и указать в Автоменю файл с 3D изображением (в данном случае "D:\2.grb").
Если же вставка производилась через Автоменю (опция указания файла-фрагмента установлена по умолчанию), то с 3D изображение появляется сразу после завершения операции.

Может кто знает как решить проблему?
Изменено: Сергей Максимов - 18.03.2010 19:17:56
Помогите с названием программы!
 
Разрабатываем корпоративную программу с использованием API TFlex. Программа уже почти закончена. Не можем придумать красивое название. Заранее благодарен.
Разработка приложений под Open API T-FLEX CAD (.NET)
 
В T-FLEX CAD разработан функционал для создания собственных приложений на основе технологии .NET. Пользователь может создавать приложения, использующие функционал параметрического и геометрического ядер T-FLEX CAD.
Думаю эта тема скоро станет востребованной, поэтому взял на себя смелость создать соответствующую ветку. Существующая ветка "Вопросы по API" в основном посвящена макросам. Несмотря на то, что в принципе макросы и отдельные приложения строятся на одних и тех же методах, все же есть различия в подходе создания и применения: макросы, на мой взгляд, предназначены для решения локальных задач - типа задачи объединения нескольких комманд в один вызов макроса, а приложения решают более серьезные задачи.
Сейчас осваиваю программирование под T-FLEX CAD и как у всех начинающих - много вопросов. По-началу вопросы адресовал разработчикам, а потом подумал, что многие проблемы, с которыми сталкиваюсь сам при освоении, возникают и у других пользователей. К тому же осваивать новое лучше не в одиночку. Надеюсь, что этой темой заинтересуются еще пользователи и мы вместе сможем осваивать материал быстрее. Очень ценны советы Brom25. Надеюсь, что ответы на вопросы мы сможем получать и от разработчиков.

Вот мой первый вопрос (перенесен из ветки "Вопросы по API"):
Как создавать контекстное меню в С# разобрался. Причем, задал вызов меню на элементе control. Когда приложение запущено, но файл еще не открыт контекстное меню работает, но при открытии файла в control - контекстное меню работать отказывается. В руководстве по API есть описание вызова:

__delegate void ControlContextMenu(Object* sender, ControlEventArgs* e);

Как его вызвать понять не могу - примера нет.
Страницы: 1