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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Вопросы начинающего, вопросы от тех, кто только начинает своё знакомство с T-FLEX CAD
 
Вопросы о T-FLEX CAD от тех, кто начинает своё знакомство с T-FLEX CAD.
-------------------------
Новичкам рекомендуем ознакомиться с Учебным Пособием по T-FLEX CAD:
Онлайн: https://www.tflexcad.ru/help/tutorial/17/
Оффлайн: https://www.tflexcad.ru/download/tutorial/
Страницы: Пред. 1 ... 160 161 162 163 164 165 ... 419 След.
Ответы
 
Цитата
Osiris2000 написал:
Цитата
SaprOnOff86 написал:
Хороший визуализатор в ТФ-14, простой и понятный, и при минимуме настроек даёт хорошую картинку. Но как сохранить изображение?!
Похоже, иконка получилась крайне неудачная. В версии 15 переделаем.
 
Цитата
Vite написал:
Используйте прямой слеш ../
Не помогло.
Скрытый текст

Цитата
Plitkorez написал:
Через двойной \\. Один ТФ съедает.
Помогло. Но путь получается абсолютный, что плохо. Пока делаю по Вашему совету. Боюсь будут проблемы при малейших изменениях папок.
Успех это способность идти от одной неудачи к другой без потери энтузиазма.
(У.Черчиль)
 
Цитата
ВладиславКМВ написал:
Не помогло.
Определение пути, относительно расположения "Сборка.grb":

Директория_1
- Модель_1.grb (путь: '../Модель_1.grb', или '..\\Модель_1.grb')
- Директория_2
-- Модель_2.grb (путь: 'Модель_2.grb')
-- Директория_3
--- Модель_3.grb (путь: 'Директория_3/Модель_3.grb', или 'Директория_3\\Модель_3.grb')
-- Сборка.grb (Корневая директория: 'Директория_2')
Изменено: Vite - 01.02.2016 22:32:43
T-FLEX CAD 17.1.6.0
 
Цитата
Vite написал:
Определение пути, относительно расположения библиотеки "Плитка.tws":
Нельзя ли показать наглядно на дереве где какие дирректории?
Успех это способность идти от одной неудачи к другой без потери энтузиазма.
(У.Черчиль)
 
Цитата
ВладиславКМВ написал:
Нельзя ли показать наглядно на дереве где какие дирректории?
В данном случае пути рассчитываются относительно сборки. Фигурные скобки используются для определения вложенной директории на одном уровне с библиотекой. Вам нужно определить путь вне корневой директории, по этому используйте слеш.
T-FLEX CAD 17.1.6.0
 
Цитата
Sila Musli написал:

Цитата
Talester написал:
Как я понял, фрагмент при вставке в сборку может получить параметры из коннектора или переменных сборки. Причем поток данных коннектора идет только в одну сторону - от уже существующих фрагментов в сторону нового добавленного фрагмента.
Существуют несколько вариантов для передачи значений переменных в обе стороны, такие как автосохранение и глобальные переменные, внешняя БД. Много раз обсуждалось.
Спасибо за направление поиска. БД не подошло, глобальные переменные устраивают, но есть проблема: если в GETG имя глобальной переменной указать через переменную GETG($GVname,10), то функция перестает считывать данные (хотя редактор переменных не ругается). При GETG("Param1",10) все, естественно, работает нормально. Это нормальное поведение ТФ?
Учебная 15.0.10 Win7/64bit
 
Цитата
Talester написал:
если в GETG имя глобальной переменной указать через переменную GETG($GVname,10), то функция перестает считывать данные (хотя редактор переменных не ругается).
Тут Вы хотите считать текстовое значение, значит и писать должны немного по другому. Для считывания текстовой глобальной переменной $GVname выражение будет иметь вид $a=TGETG("$GVname","10").
 
Я хочу считать именно вещественное значение из ГП "Param1". Название этой переменной хранится в $GVname, т.е.
в сборке
$GVname = "Param1"

в черетеже №1
$GVname = $GVname (из переменная сборки)
В = SETG ($GVname, 20) - работает, ГП "Param1"=20

в черетеже 2
$GVname = $GVname (из переменная сборки)
А = GETG($GVname,10) - не работает, А=10
С = GETG( "Param1",10) - работает, С=20

При изменении значения ГП вручную не помогает, значения не загружаются в черт.№2.

P.S. Ситуация еще интереснее, если в чертеже определять А и С, т.е
А = GETG($GVname,10)
С = GETG( "Param1",10)
то А=.. прекрасно работает и принимает данные так же, как и С=... , но если оставить ТОЛЬКО А=... без С=...,
то А = GETG($GVname,10) перестает работать
Изменено: Talester - 01.02.2016 13:17:04
Учебная 15.0.10 Win7/64bit
 
Опишите задачу. Вижу, что идёте изначально не верным путём. Нет нужды запараметризовывать имена переменных. И называйте переменные хоть немного не одинаково к примеру $GVname и $GVname_GP иначе только путаетесь.
 
Задача,в общих чертах, следующая.
В сборку вставляется два фрагмента Ф1 и Ф2, и последний добавляемый фрагмент Ф2 должен получить из сборки параметр П1, вычислить параметр П2, и передать его уже существующему в сборке фрагменту Ф1. Инструментом для передачи выбраны глобальные параметрым(ГП). Например, Шестерня(Ф2) получает от сборки "Редуктор" через внешнюю переменную параметр "Количество зубьев"(П1), вычисляет делительный диаметр(П2) и загружает его в ГП, имя которой передается в Ф2 через внешнюю переменную отдельным параметром (ГП_имя_Ш) - SETG($ГП_имя_Ш, П2). Имя ГП в сборке хранится в переменной ГП_имя="Диаметр". Сборка, в свою очередь, загружает П2 из ГП в переменную А и через внешние переменные передает его уже существующему в сборке фрагменту "Корпус"(Ф1) - А=GETG($ГП_имя,10).
Т.к. шестерня деталь универсальная и может одновременно использоваться в нескольких подобных сборках, то и название ГП при передачи П2 для разных сборок должно отличаться. Отсюда и необходимость в параметризации имени ГП в конструкции SETG($ГП_имя_Ш, П2). Теперь попробую объяснить необходимость параметризации при приеме П2 из ГП в конструкции $ГП_имя="Диаметр", А = GETG($ГП_имя,10).
1. Я по основной профессии программист, и стараюсь там, где есть хотя бы минимальные элементы программирования, придерживаться правил и методов "большого" программирования. Одно из правил хорошего стиля программирования советует при необходимости применения строковых данных определить эту строку один раз в переменной и далее при необходимости использовать только эту переменную. Это сильно упрощает жизнь, например, при исправлении ошибки в строке и/или модификации строки.
2. Сама сборка "Редуктор" может выступать фрагментом в сборке более высокого уровня, например, "Лебедка". В этом случае имя ГП является динамическим, формируется в процессе сборки всего изделия и может иметь УНИКАЛЬНОЕ имя в формате <Проект>_<Сборка>_<Фрагмент>_<параметр>, например, "Лебедка_ЛевыйРедуктор_Шестерня_П2", "Лебедка_ПравыйРедуктор_Шестерня_П2". На каждом уровне сборки добавляется своя часть имени ГП. Сборка "Лебедка" добавляет в изначально пустой параметр имени ГП строку "Лебедка_" и передает его в качестве параметра нижней сборке "Редуктор". Редуктор добавляет к имени ГП строку "Редуктор_" и отправляет фрагменту Шестерня. Шестерня заканчивает имя ГП своим названием и названием передаваемого параметра "Шестерня_П2". Это позволяет:
а) не вносить хаос в возможно большое количество глобальных переменных
б) даже через продолжительное время по имени можно будет вспомнить назначение ГП и определить ее актуальность
в) параметры П2, предназначенные для различных сборок, не будут пересекаться и искажаться как в пределах одного проекта, так и в целом
г) генерация и поддержка уникальных имен ГП не потребует от проектировщика практически никаких усилий - они будут получаться автоматически при соблюдении некоторых несложных правил.
Изменено: Talester - 01.02.2016 16:29:44
Учебная 15.0.10 Win7/64bit
 
Цитата
Talester написал:
Задача,в общих чертах, следующая.
Лучше создать несколько файлов с прямоугольниками и сборки и посмотреть как всё завязано, чтобы и Вам и нам было понятно всё.
Цитата
Talester написал:
Т.к. шестерня деталь универсальная и может одновременно использоваться в нескольких подобных сборках, то и название ГП при передачи П2 для разных сборок должно отличаться.
Если деталь библиотечная у неё не должно быть глобальных переменных впринципе. Все необходимые параметры она получает на уровне сборки. От деталей или самой сборки. В Вашем случае она никак библиотечной быть не может. В каждом проекте будет своё колесо. Деталь создавать разные глобальные переменные в зависимости от того куда она входит не сможет, она не исполняемый файл. Или в библиотечное колесо Вам потребуется каждый раз вставлять новые переменные для создание глобальных переменных.
Цитата
Talester написал:
Я по основной профессии программист
Очень хорошо, а теперь забудте чему Вас учили на программировании и становитесь конструктором или делайте макросы под свои нужды, тогда вопросы свои возможно закроите.
Цитата
Talester написал:
может иметь УНИКАЛЬНОЕ имя в формате
Это правильно, я давно твержу тут, что автоматом в имя глобальной переменной должен включатся путь по желанию, иначе можно подцепить не то значение и будет ошибка. Но пока ни за ни против не слышал от разрабов.
Цитата
Talester написал:
г) генерация и поддержка уникальных имен ГП не потребует от проектировщика практически никаких усилий - они будут получаться автоматически при соблюдении некоторых несложных правил.
Ошибаетесь) Нет времени, нет желания, я ща по быстрому сделаю....Пока это не будет поддерживаться на уровне КАДа, ничего хорошего из этого не выйдет( Только из-за этого стараюсь не пользоваться ГП.
 
Вот набросал примерно как я б сделал данную задачу.
В сборке Ф1 и Ф2, в самой сборке П1, он задаёт диаметр в Ф2, там же считается П2, через сборку попадает в Ф1, автосохранение помогает перестраивать Ф1 относительно Ф2.
И всё это без ГП.
 
Цитата
Talester написал:
В сборку вставляется два фрагмента Ф1 и Ф2, и последний добавляемый фрагмент Ф2 должен получить из сборки параметр П1, вычислить параметр П2, и передать его уже существующему в сборке фрагменту Ф1.
Предприятие использует детали по класcификатору, или размерность не имеет значение?
T-FLEX CAD 17.1.6.0
 
Цитата
Vite написал:
Цитата
Talester написал:
В сборку вставляется два фрагмента Ф1 и Ф2, и последний добавляемый фрагмент Ф2 должен получить из сборки параметр П1, вычислить параметр П2, и передать его уже существующему в сборке фрагменту Ф1.
Предприятие использует детали по класcификатору, или размерность не имеет значение?
Не предприятие, это для себя лично. Увлекаюсь 3D печатью, пытаюсь перейти с чисто программисткой OpenSCAD на настоящий CAD. До классификаторов, библиотек еще не дошел, не было необходимости.
Цитата
Sila Musli написал:
Вот набросал примерно как я б сделал данную задачу.
В сборке Ф1 и Ф2, в самой сборке П1, он задаёт диаметр в Ф2, там же считается П2, через сборку попадает в Ф1, автосохранение помогает перестраивать Ф1 относительно Ф2.
И всё это без ГП.
Я тоже пытался использовать конструкцию типа П2=get("3D фрагмент_2","П2"), но не понравился следующий момент - пока в сборке отсутствует 3D фрагмент_2, переменная П2 не создается (вернее создается, но с предупреждением). Если сейчас из сборки вашего примера удалить "3D фрагмент_2", то переменная сборки П2 тоже исчезнет, т.е. П2 в сборке нужно описывать каждый раз после добавления "3D фрагмент_2". А теперь представте, если таких фрагментов несколько и у каждого по несколько передаваемых параметров, да еще и сборка много раз перестраивается для нахождения оптимума. Я выбрался из этой ситуации тем, что сохранил в файле все переменные сборки, определяемые через GET, и после добавления фрагмента загружал этот файл.
Мне ваш пример интересен вот каким еще моментом. Я вижу, что переменные во фрагментах определены как внешние, но не привязаны к переменным сборки, но, тем не менее, сборка как-то управляет размерами фрагментов. Не могли бы вы обяснить этот механизм управления без явной привязки к переменным сборки, думаю тут и надо копаться.
Цитата
Sila Musli написал:
Ошибаетесь) Нет времени, нет желания, я ща по быстрому сделаю....Пока это не будет поддерживаться на уровне КАДа, ничего хорошего из этого не выйдет( Только из-за этого стараюсь не пользоваться ГП.
Человек самое слабое звено в любой системе. А насчет использования ГП согласен - ГП во всех языках програмирования источник трудноуловимых ошибок. Преподователи за ГП били по рукам так же, как и за GOTO. Если в ТФ их использовать по прямому назначению - для ХРАНЕНИЯ (и только для хранения) общих глобальных данных, то нет проблем. Но если начать извращаться (а передача данных между фрагментами через ГП - чистой воды извращение в стиле"на безрыбъе и рак рыба"), то жди беды. Разработчики могли бы сильно упростить жизнь конструкторам реализовав всего лишь один механизм - доступ к переменным фрагмента из сборки (и только из сборки): П2= "3D фрагмент_2".П2
Учебная 15.0.10 Win7/64bit
 
Цитата
Talester написал:
В сборку вставляется два фрагмента Ф1 и Ф2, и последний добавляемый фрагмент Ф2 должен получить из сборки параметр П1, вычислить параметр П2, и передать его уже существующему в сборке фрагменту Ф1.
Возможно, Вам надо посмотреть Механизм «Smart Fragment».
 
Цитата
Talester написал:
Разработчики могли бы сильно упростить жизнь конструкторам реализовав всего лишь один механизм - доступ к переменным фрагмента из сборки
Может я чего то не так понял. Но переменные фрагмента в сборке вроде можно получить командой "Измерить". Я так иногда делаю для своих задач
 
Цитата
Павел Перфильев написал:
Цитата
Talester написал:
Разработчики могли бы сильно упростить жизнь конструкторам реализовав всего лишь один механизм - доступ к переменным фрагмента из сборки
Может я чего то не так понял. Но переменные фрагмента в сборке вроде можно получить командой "Измерить". Я так иногда делаю для своих задач
Да, можно получить командой A=get("Имя_фрагмента",Переменная_Фрагмента). Чуть выше я уже отметил некоторый недостаток этой функции - переменная А исчезнет из списка переменных сборки как только вы по какой-либо причине удалите фрагмент "Имя_фрагмента" из сборки. Проблема здесь в том, что А в свою очередь может выступать как параметр для другого фрагмента Ф1 сборки, который в этом случае останется без входного параметра. При следующей вставки фрагмента "Имя_фрагмента" вам придется еще раз описать A=get("Имя_фрагмента",Переменная_Фрагмента). Но при повторном описании А около него появляется знак вопроса, т.е. фрагмент Ф1 теряет связь со своим входным параметром А. Чтобы востановить связь Ф1 с А нужно удалить и снова вставить Ф1 (может есть другой способ, я не знаю)
Учебная 15.0.10 Win7/64bit
 
Цитата
Talester написал:
Задача,в общих чертах, следующая.
В сборку вставляется два фрагмента Ф1 и Ф2, и последний добавляемый фрагмент Ф2 должен получить из сборки параметр П1, вычислить параметр П2, и передать его уже существующему в сборке фрагменту Ф1.
В ТФ замечательные параметрические возможности, но это не полноценный язык программирования. Здесь необходим немного другой подход. Посмотрите возможности передачи параметров через коннекторы (правда только в одну сторону), так же переменной можно назначать значение переменной сборки(в свойствах). Вычисление параметров, в зависимости от задачи, возможно в родителе (с последующей передачей потомку), в потомке (от переданных параметров), либо в сборке (с последующей передачей фрагменту). В общем решений может быть несколько, выбирать Вам.
Изменено: Plitkorez - 02.02.2016 15:20:18
 
Цитата
Talester написал:
Я вижу, что переменные во фрагментах определены как внешние, но не привязаны к переменным сборки, но, тем не менее, сборка как-то управляет размерами фрагментов.
Это называется автосохранение, есть соответствующая галка при вставке и в свойствах фрагмента.
Цитата
Talester написал:
Я выбрался из этой ситуации тем, что сохранил в файле все переменные сборки, определяемые через GET, и после добавления фрагмента загружал этот файл.
Я иногда использую управляющий фрагмент, который не имеет геометрии, и вставлен во все файлы проекта. В нём все расчёты и переменные, а фрагменты берут все данные от туда и туда передают если требуется.
Цитата
Talester написал:
Чуть выше я уже отметил некоторый недостаток этой функции - переменная А исчезнет из списка переменных сборки как только вы по какой-либо причине удалите фрагмент "Имя_фрагмента" из сборки.
Это ошибка, и её уже исправляли. При удалении переменная не должна удалятся, должно её выражение принимать её значение, а то кроме этого фрагмента удаляются и другие, которые используют переменные из этого фрагмента.
 
доброго времени суток. Заметили на одной машине c T-Flex 12.0.74х64 (Windows 7x64) что при открытой программе перестает работать буфер обмена на компе. Как только флекс закрываешь, тут же начинает работать
Страницы: Пред. 1 ... 160 161 162 163 164 165 ... 419 След.