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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Деталировка сборки одной кнопкой, Деталирование сборки из множества фрагментов одной кнопкой
 
В приложенном файле есть макрос "Деталировка", который выгружает фрагменты сборки с текущими загруженными переменными, сохраняет файл рядом со сборкой согласно наименованию и обозначению, а также подменяет ссылки в сборке на раздеталированные фрагменты.
Может кому пригодится.
 
За такие вещи - всегда плюсую)
Практика - критерий истины (с)
 
Цитата
Цитата
SaprOnOff86 написал: В приложенном файле есть макрос "Деталировка", который выгружает фрагменты сборки с текущими загруженными переменными, сохраняет файл рядом со сборкой согласно наименованию и обозначению, а также подменяет ссылки в сборке на раздеталированные фрагменты. Может кому пригодится.
Андрей Мальчук
написал:
За такие вещи - всегда плюсую)
Как предложение...
Такие вещи желательно структурировать на первой странице форума по API, чтоб не осуществлять лихорадочный поиск макросов по форуму.
Clipboard01.jpg (58.2 КБ)
T-FLEX CAD 17.0.56.0, W7/W10
 
А как-бы отдельно и для ТФ 12? Спасибо
 
Цитата
Шурик написал:
А как-бы отдельно и для ТФ 12? Спасибо
Пример во вложении в Редакторе макросов, либо через окошко макросов ПКМ - выполнить:
Изменено: SaprOnOff86 - 24.11.2016 13:21:55
 
Цитата
SaprOnOff86 написал:
Пример во вложении в Редакторе макросов
Что-то не пошло, или для 12 не предназначено. Пример простейший, стеллаж СБ, полка, рамка, стойка. меняет только сборочный. Я в файл Деталировка вставляю фрагмент, а надо бы собрать в этом файле сборку я так думаю.
 
Цитата
SaprOnOff86 написал:
В приложенном файле есть макрос "Деталировка", который выгружает фрагменты сборки с текущими загруженными переменными, сохраняет файл рядом со сборкой согласно наименованию и обозначению, а также подменяет ссылки в сборке на раздеталированные фрагменты.
Может кому пригодится.
Может кто-нибудь починить его? Вылезает
Код
Ошибка во время выполнения макроса 'MacroNameSpace.NewMacroClass.Деталировка': Ссылка на объект не указывает на экземпляр объекта.
 
В ТФ новичок, не уловил, как запустить этот макрос для уже готовой сборки?
 
Цитата
kkk написал:
В ТФ новичок, не уловил, как запустить этот макрос для уже готовой сборки?
закинуть GRB файл с написанным макросом в папку ТФ там где макросы хранятся
 
Хотелось бы иметь возможность пробегать по деталям и в подсборках, на всех уровнях. Как это реализовать?
 
Цитата
написал:
Хотелось бы иметь возможность пробегать по деталям и в подсборках, на всех уровнях. Как это реализовать?
Сначала ручками потом можно макросом используя API
 
Цитата
zobza написал:
Сначала ручками потом можно макросом используя API
Я, скорее, про алгоритм, который позволяет пробегаться по всему дереву, когда уровень вложенности неизвестен.
 
Поправил макрос под 17 версию CAD'a. В файле пример файловой структуры.
Код
using System;
using TFlex;
using TFlex.Model;
using TFlex.Model.Model2D;
using System.Windows;
using TFlex.Model.Model3D;
using System.IO;

namespace MacroNameSpace
{
    public class NewMacroClass
    {
        //-------------------------------------------------------------------------------------   
        //Составим функцию FindVar поиска переменной по имени
        private static Variable FindVar(Document doc, string name)
        {
            foreach (Variable var in doc.GetVariables())
                if (var.Name == name) return var;
            return null;
        }
        //------------------------------------------------------------------------------------
        public static void Деталировка()
        {
            Document doc = TFlex.Application.ActiveDocument;

            Variable NameDoc = FindVar(doc, "$Обозначение");

            doc.BeginChanges("Деталировка");

            foreach (Fragment3D Frag in doc.GetFragments3D())
            {
                Document DC = Frag.GetFragmentDocument(true);

                Variable Vob = FindVar(DC, "$Обозначение");
                Variable VName = FindVar(DC, "$Наименование");

                String value = Vob.TextValue.ToString();
                String value2 = value.Replace("/", "_");

                String newName = String.Concat(
                Path.GetDirectoryName(doc.FileName), "\\", VName.TextValue.ToString(), " ", value2.ToString(), Path.GetExtension(DC.FileName));
                string FrLink = "<" + NameDoc.TextValue + ">" + VName.TextValue.ToString() + " " + value2.ToString() + ".grb";

                Document FRdoc = Frag.OpenPart();
                FRdoc.BeginChanges("Создаем деталь");

                FRdoc.SaveAs(newName);
                FRdoc.EndChanges();
                FRdoc.Close();
                Frag.FileLink = new TFlex.Model.FileLink(doc, FrLink);
            }
            doc.EndChanges();
        }
        //-----------------------------------------------------------
    }
}
Страницы: 1