Проблемма такая: Я использую t-flex учебная версия 8.0 У меня есть стол. Все его детали берут свои размеры из *.dbf базы данных. Все работает на ура. но когда я создаю сбоку, в ней размеры деталей не изменяются. Если выбрать "редактировать деталь" в сборке, ее размеры изменяются как в базе задано. Почему так?
Способов довольно много, но все они основаны на использовании переменных. Если звенья цепочки одинаковые, то самое простое - создать цепочку в виде массива, количество копий в котором в свою очередь задать при помощи внешней переменной. Из сборки этим значением можно управлять. Если требуется понятие "исполнение", то тогда связать не с внешней, а с внутренней переменной, значение которой рассчитывать в зависимости от значения, управляющего "исполнением".
Можно также использовать переменную для управления видимостью любого элемента или его подавления.
Я извиняюсь за глупые вопросы TFUser, но не могли бы Вы мне по понятнее объяснить в чём отличие внешней переменной от внутренней и как создать переменную для управления видимостью элемента!
Внешняя переменная видна в сборке, а внутренняя только в файле. Изменяя внешюю переменную в сборке можно изменять геометрию детали. При этом если необходимо синхронизировать размеры в файле и сборке, необходимо выполнить операцию деталировки из контекстного меню. Чтобы переменную сделать внешней достаточно поставить флажок напротив ее имени, но только в том случае, если переменная задана одним параметром, а не целым выражением. Данная проблема уже подробно обсуждалась на форуме - поищите по-внимательнее.
Я для стыковки деталей давно пользуюсь внешней Базой Данных. Стал даже фанатом этого направления. Один щелчок - и все детали поменялись. Только есть 2 минуса: 1. При большом количестве переменных из БД при одновременно открытом Экселле и Т-Флексе, последний начинает тупить. Медленно работает когда открыт редактор переменных. 2. ВСЕ фрагменты надо обновлять вручную. Т.е. открыть файл, обновить ссылки, сделать полный пересчёт и сохранить. Иначе при печати повылезает ТАКОЕ!!! *Но искусство требует жертв. Меня это устраивает.
Вот пример. Поменял кое-что в БД по ссылке из Экселя. На главной сборке выполнил «Обновить ссылки» и «полный пересчёт модели» Это видим на экране и хотим распечатать.
Но если ставим в свойствах всех фрагментов «Всегда пересчитывать 3д модель», тогда этот финт спасает. Даже если нет ни одной 3д модели. Даже если на эти пересчёты тратится дополнительное время
Предлагю всем желающим поиграть в увлекательную игру "Угадай положение грани". Игрушку делаем так: создаем кубик (для удобства грани нумеруем). В свойствах кубика на вкладке "преобразование" создаем повроты вокруг осей X, Y и Z. Ставим в соответствие этим значениям переменные X, Y и Z. Для удобства игры в редакторе переменных создаем списки значений углов 0, 90,180,270,360. Начало игры такое: через редактор устанавливаем Z=90 и нажимаем ОК. Смотрим, как повернулся кубик относительно системы координат. Далее через редактор устанавливаем X=90 и, не нажимая ОК, предполагаем, как повернется кубик. После этого нажимаем ОК и смотрим, удалось ли угадать. Потом устанавливаем какое-нибудь другое значение одного из углов и опять пытаемся угадать положение кубика. Верхний уровень - понять, по какому алгоритму это происходит.
Если кто поймет, напишите. Может у меня глюк какой.
Я поиграл. Всё работает верно. Вы заметили, что углы добавляются не одновременно, а по очереди? Это важно. И применяются они по очереди. Сначала тот поворот, который добавлен первым, потом второй, потом третий. Вы добавили 3 поворота. Соответственно, сначала делается поворот относительно X. Потом, от результирующего положения - относительно Y. Результат поворачивается относительно Z. Если поворачивать одновременно на 3 угла, как Вы делаете, то действительно, трудно сразу представить результат. Но можно. Именно потому, что поворот идёт не одновременно, а последовательно. Причём разная последовательность добавления углов даёт, естественно, разный результат.
Остался вопрос. А зачем Вам это? Если просто поиграть, то игрушка занятная.
В общем виде задача такая: поворачивать фрагмент на заданный угол вокруг одной из осей. На одном из форумов был вопрос "а слабо сделать в 3D CAD игрушку кубик Рубика"? Решил для интереса сделать (исключительно на редакторе переменных и элементе управления, без макросов) и наткнулся на эту проблему. Но думаю, что эта задача может иметь и практическое применение. А может зародится новое направление - CAD-игрушки.
Теперь по существу вопроса. Я тоже предположил, что при изменении одной из переменных положение фрагмента пересчитывается по всем переменным и тогда достаточно будет ввести обратный доворот по тем осям, вокруг которых поворот не требутся. Но выяснилось, что это не так. Рассмотрим пример, который я привел. На верхней картинке состояние X=0, Y=0, Z=90. При повороте из этого состояния только вокруг X на 90 должно быть: грань 6 на месте, грань 3 вверху, грань 2 слева. Реально получилось то, что на средней картинке. Если предположить, что после поворота вокруг X еще раз происходит поворот вокруг Z на 90 (что идеологически не есть верно т.к. я меняю только переменную X), то для достижения нужного мне результата достаточно выполнить обратный поворот вокруг Z на величину -Z (т.е. на -90 или 270). Но выясняется. что надо еще выполнить такой же доворот вокруг оcи Y (Что вообще непонятно т.к. Y=0). Это видно на третьей картинке.
Если же из исходного состояния X=0,Y=90,Z=180 задать X=90, то получить положение, соответствующее повороту только вокруг оси X обратными доворотами по Y и по Z у меня не получилось (надо Y=270 и z=90 и именно в такой последовательности).
Если же из исходного состояния X=0,Y=0,Z=0 изменять значения X, затем значения Y, а затем значения Z, то повороты выполняются строго вокруг соответствующих осей. Это наводит на мысль о том, что отрабатываются не все переменные списка, а только те, которые стоят после изменяемой переменной.
Из всего этого следует, что алгоритм здесь не такой простой (если это не ошибка) и в общем-то нелогичный. Как машина с тремя рулями - чтобы повернуть направо надо остальные два руля выставить в определенное положение, иначе повернешь не туда, куда хотел.
Хочу обратить внимание на то, что преобразования выполнялись путем изменения значения только одной переменной за раз. Т.е. изменили значение X в редакторе переменных - нажали ОК. Снова вошли в редактор переменных, изменили значение Y - нажали ОК и т.д.
Люди, может кто-нибудь грамотно ответить: почему при выводе на печать печатается совсем другое?
А подробнее...? Вы перед отправкой на печать просмотр включаете? Еще проверьте настройку принтера, лет 5 назад у менря была подобная проблема, но после того как админ покопался с сетевыми настройками принтера - все заработало. У некоторых принтеров есть свой сетевой установщик, он назначает IP-адрес принтеру.
Подробно: На компьютере, чей плоттер я использую для печати, не установлен t-flex. Поэтому я перевожу чертежи в формат pdf (Adobe) или tif (Microsoft Office Document Image Writer), записываю на съёмный диск и несу на печать. Просмотр перед печатью я включаю всегда. Вобщем-то, делаю всё правильно. Тут нет разницы - виртуальный это принтер или реальный. На реальном XEROX, который подключен напрямую к моему компьютеру, всё так же. ************* Есть некоторые хитрости, которые я использую для правильной печати. Но это лишь хитрости, то бишь, извращения плюс убитое время. T-flex сам должен правильно работать.