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


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

Страницы: 1
Разбиение 2D-страниц на документы определенного типа
 
Ирина,
using TFlex;
using TFlex.Model;
using TFlex.Model.Model2D;
using System.Collections.Generic;

namespace NewMacroNamespace
{
public class NewMacroClass
{
public static void СохранениеСтраниц()
{
Document документ = TFlex.Application.ActiveDocument; //создаем объект для работы с текущим документом
string ПутьКДокументу = документ.FilePath; //считываем полный путь к документу включая название

List<Page> страницыЧертеж = new List<Page>();
List<Page> страницыСпецификация = new List<Page>();
List<Page> страницыПереченьЭлементов = new List<Page>();

foreach(Fragment фрагмент in документ.GetFragments())
{
switch (фрагмент.FilePath)
{
case "<Форматки>Конструкторский чертеж. Первый лист. ГОСТ 2.104-68.GRB":
case "<Форматки>Конструкторский чертеж. Последующие листы. ГОСТ 2.104-68.GRB":
страницыЧертеж.Add(фрагмент.Page);
break;
case "<Форматки>Спецификация. Первый лист. ГОСТ 2.106-96 Ф1.grb":
case "<Форматки>Спецификация. Последующие листы. ГОСТ 2.106-96 Ф1a.grb":
страницыСпецификация.Add(фрагмент.Page);
break;
case "<Форматки>Перечень элементов. ГОСТ 2.701-84.grb":
страницыПереченьЭлементов.Add(фрагмент.Page);
break;
}
}
if (страницыЧертеж.Count != 0)
{
ExportToPDF экспортВPDFЧертеж = new ExportToPDF(документ);
экспортВPDFЧертеж.ExportPages = страницыЧертеж;
экспортВPDFЧертеж.Export(ПутьКДокументу + "\\1.pdf");
}
if (страницыСпецификация.Count != 0)
{
ExportToPDF экспортВPDFСпецификации = new ExportToPDF(документ);
экспортВPDFСпецификации.ExportPages = страницыСпецификация;
экспортВPDFСпецификации.Export(ПутьКДокументу + "\\2.pdf");
}
if (страницыПереченьЭлементов.Count != 0)
{
ExportToPDF экспортВPDFПереченьЭлементов = new ExportToPDF(документ);
экспортВPDFПереченьЭлементов.ExportPages = страницыПереченьЭлементов;
экспортВPDFПереченьЭлементов.Export(ПутьКДокументу + "\\3.pdf");
}
}

}
}
Разбиение 2D-страниц на документы определенного типа
 
[QUOTE]Ирина написал:
[QUOTE][URL=/forum/index.php?PAGE_NAME=profile_view&UID=16971]Анатолий Ледяев[/URL] написал:
[URL=/forum/index.php?PAGE_NAME=profile_view&UID=81201&sphrase_id=32845]Ирина[/URL] , в коде макроса прописать соответствие имен фрагментов находящихся на странице. Вначале найти все фрагменты из указанного вами перечня. Затем определить на каких страницах они находятся, и уже поочередно экспортировать с указанием нужных страниц.[/QUOTE]
Анатолий, например, пользователь работает со спецификацией, добавил объекты, автоматически создалась еще одна страница.
Макрос сможет отследить, что создалась еще одна страница? Или каждый раз нужно будет запускать макрос?
Интересно, конечно, программно отслеживать, без дополнительных макросов и действий пользователя.[/QUOTE]
Я делал макрос по экспорту в PDF. Выполнялся он из окна "Макросы", т.е. для получения pdf, после того как добавили новые детали в сборку в любом случае необходимо запускать макрос, чтобы сами pdf обновить. У вас изменилась спецификация и добавились новые страницы, необходимо данный макрос запустить и он сформирует pdf файлы, в соответствии с вашими требованиями. Главное всё правильно прописать в коде.
1. Найти необходимые фрагменты.
2. Определить на каких страницах они находятся
3. Сгруппировать
4. Экспортировать группы в pdf.
Разбиение 2D-страниц на документы определенного типа
 
Ирина, в коде макроса прописать соответствие имен фрагментов находящихся на странице. Вначале найти все фрагменты из указанного вами перечня. Затем определить на каких страницах они находятся, и уже поочередно экспортировать с указанием нужных страниц.
Вопросы начинающего, вопросы от тех, кто только начинает своё знакомство с T-FLEX CAD
 
Цитата
Sila Musli написал:
Цитата
Анатолий Ледяев написал:
Здравствуйте.
Подскажите, кто-нибудь сталкивался с необходимостью добавить свой список допусков и посадок в систему. Стандартными механизмами это не предусмотрено. Может обходными вариантами возможно это сделать?
Нет не сталкивался, но посмотрите C:\Program Files\T-FLEX CAD 15 x64\Program\tolerances.mdb, допуски все там вроде... Добавить свои в принципе возможно
К сожалению данный файл определяет только диапазоны, новые значения (буквенные обозначения) в нём не задать. Вернее их записать можно, но T-Flex при выборе у размера не будет их отображать. T-Flex использует этот файл только для автоматического изменения значений отклонения при изменении размера.
Вопросы начинающего, вопросы от тех, кто только начинает своё знакомство с T-FLEX CAD
 
Здравствуйте.
Подскажите, кто-нибудь сталкивался с необходимостью добавить свой список допусков и посадок в систему. Стандартными механизмами это не предусмотрено. Может обходными вариантами возможно это сделать?
Вопрос по API
 
[QUOTE]ВладиславКМВ написал:
Отлично, Анатолий! Благодарю за макрос. После перезапуска ТФ макрос появился в общем списке. Месседж бокс действительно был лишним, если линий за сотню замучаешься соглашаться. Была небольшая проблема. У вас переменная М в коде написана латиницей, исправил на кирилицу (у меня переменная написана русским шрифтом), и всё работает.
Да, есть вопрос, откуда появляются многочисленные нулевые линии? У меня их изначально всего две. А после отработки макроса набегает ещё несколько.  
    Скрытый текст          [/QUOTE]
Не за что. По нулевым линиям не знаю откуда, попробуйте перед запуском макроса делать удаление лишних объектов, возможно не будут появляться.
Скрытый текст
Изменено: Анатолий Ледяев - 17.05.2016 23:13:49 (корректировка)
Вопрос по API
 
Пересохранил. В проекте нужно было добавить ещё одну ссылку. Заодно текст немного подредактировал, и скомпилировал, должен работать если добавите в папку с макросами.
Вопрос по API
 
[QUOTE]ВладиславКМВ написал:
Нужен макрос для автоматизации однотипных действий.
Делаю планировку 2D. В качестве подосновы чертежа берётся изображение. На изображении нет размеров, масштаб изображения произвольный, но планировку надо сделать близко к реальным размерам. По имеющимся на изображении цифрам вычисляю вручную масштаб, назначаю переменную М. Дальше назначаю эту переменную в качестве масштаба изображению. И хотя теперь можно получит почти реальные размеры, дополнительно делаю умножение значения каждой линии построения на этот масштаб (по умолчанию 1:1) Теперь при корректировке переменной масштаба в любую сторону одновременно корректируются и линии построения и подоснова. Но... линий построения много и нужно в каждую вставлять мастаб (см. скрин). Можно ли это делать с помощью макроса и одной кнопки?     Скрытый текст          [/QUOTE]
Макрос меняет у всех линий построения значение на новое. Минус в том, что вместо изменения выражения у линии построения, на каждую линию построения создается новая переменная, равная старому значению умноженному на переменную M, и эта переменная подставляется в значение линии построения. Не нашел чтобы можно было подставлять выражение для линии построения.
T-FLEX DOCs API, Вопросы связанные с программированием средствами T-FLEX DOCs
 
Здравствуйте. Попробуйте с таким кодом должно изменить тип у объекта.

using System;
using System.Collections;
using System.Collections.Generic;
using TFlex.DOCs.Model.Macros;
using TFlex.DOCs.Model.Macros.ObjectModel;
using TFlex.DOCs.Model;
using TFlex.DOCs.Model.References;
using TFlex.DOCs.Model.Classes;

public class Macro : MacroProvider
{
   public Macro(MacroContext context)
       : base(context)
   {}

   public override void Run()
   {
       Объект текущийОбъект = ТекущийОбъект;
       ReferenceObject текущийОбъектRef = (ReferenceObject)текущийОбъект;
       Guid тип2Guid = new Guid("<guid типа 2>");
       ReferenceInfo переменнаяСправочник = Context.Connection.ReferenceCatalog.Find(new Guid ("<guid справочника>"));    //подключается необходимый справочник
       Reference справочник = переменнаяСправочник.CreateReference();                            //создание объекта для работы с данными
       ClassObject тип2 = справочник.Classes.Find(тип2Guid);    
       текущийОбъектRef.BeginChanges(тип2);
       текущийОбъектRef.EndChanges();
   }
}
Страницы: 1