Тема: T-FLEX
Показать сообщение отдельно
Старый 19.07.2012, 07:54   #118
topic
Консультант
 
Аватар для topic
 
Регистрация: 20.07.2008
Адрес: Киев, Украина
Сообщений: 294
Сказал(а) спасибо: 130
Поблагодарили 328 раз(а) в 130 сообщениях
Вес репутации: 288
topic как роза среди колючекtopic как роза среди колючекtopic как роза среди колючекtopic как роза среди колючек
По умолчанию

Цитата:
Сообщение от slavyan74 Посмотреть сообщение
Добрый день, можно ли подготовленный проект, поаналогии с вуди, выгрузить в базу данных аксесс? Опыт показал, что потом эти данные можно самостоятельно куда угодно отправить. Хоть в раскрой, хоть в 1с хоть набумагу.

Технически это вполне возможно. TFlex в полной мере поддерживает "NET Framework", а это дает колоссальные возможности.
Вот пример кода из HELPа к TFlex мебель. Программирование под TFlex ни чуть не сложнее чем под Woody. Есть человеческое описание TFlex API, чего не было у Woody.

Скрытый текст


/// Пример итерации по мебельной модели, постренной на основе элементов модели TFlex
/// "document" - Документ, в котором хранится мебельная модель

private void Iterator(TFlex.Model.Document document)
{
/// Класс для реинтерпретации объектов TFlex в объекты мебельной модели
/*TFlex.Furniture.Model.Model*/var model = new TFlex.Furniture.Model.Model(document);

IteratorModel(model); /// Итерация по оснвоной модели

/// Пример итерации по наполнениям ящиков. Каждый ящик это тоже мебельное изделие с панелями, кромками и креплениями
foreach (/*TFlex.Furniture.Model.Drawer*/var drawer in Model.Drawers)
{
/// Документ мог быть удалён или перемещён в другую папку
/*TFlex.Furniture.Model.DrawerModel*/var drawerModel = drawer.GetDrawerModel();
if (drawerModel == null)
continue;

/// Пример получения различных характеристик ящика
/*string*/var drawerType = drawer.DrawerType; // Тип ящика
/*TFlex.Furniture.Model.Detail*/var facade = drawer.Detail; // Фасад ящика
/*double*/ var thickness = drawer.Thickness; // Толщина фасада
/*double*/ var depth = drawer.Depth; /// Глубина ящика без учёта толщины фасада

IteratorModel(drawerModel); /// Итерация по модели ящика
}
}

/// Пример итерации по мебельной модели, постренной на основе элементов модели TFlex. В том числе итерация по модели ящика
private void IteratorModel(TFlex.Furniture.Model.Model model)
{
/// Итерация по панелям
foreach (/*TFlex.Furniture.Model.Detail*/var detail in model.Details)
{
/// Документ, в котором панель. Каждая панель - это уникальное изделие, то есть уникальный документ
TFlex.Furniture.Model.DetailModel detailModel = detail.GetDetailModel();
/// Документ мог быть удалён или перемещён в другую папку
if (detailModel == null)
continue;

/// Пример вычисления пильных размеров
double sawx, sawy;
detailModel.CalcSawDims(out sawx, out sawy);
double area = sawx * sawy * 1.0e-6;

/// Пример получения различных характеристик детали

/*string*/
var material = detail.Material; /// Материал
/*string*/
var nomenclature = detail.Nomenclature; /// Название детали
/*string*/
var type = detail.Type; /// Тип прикладной детали
/*string*/
var face = detail.FaceMaterial; /// Материал лицевой пласти
/*string*/
var back = detail.BackMaterial; /// Материал нелицевой пласти
/*double*/
var thickness = detail.Thickness; /// Толщина
/*string*/
var number = detail.Number; /// Строковое представление номера детали

/// Пример итерации по кромкам
foreach (Model.Edge edge in detailModel.Edges)
{
/// Пример получения различных характеристик кромки
/*string*/
var edgematerial = edge.Material; // Материал
/*double*/
var length = edge.CalcLength(); // Длина кромки в метрах
// Способы обработки кромки на концах

/*TFlex.Furniture.Data.EdgeEndMethod*/
var right = edge.Right;
/*TFlex.Furniture.Data.EdgeEndMethod*/
var left = edge.Left;
/*uint*/
var order = edge.Order; // Порядок обработки кромок
}

/// Расширение информации о деталях с помощью данных для спецификации.
/// В данные для спецификации можно добавлять информацию о покрытиях панелей, дополнительных обработках(типа фрезерования)
/// Пример получения и итерации по данным спецификации. Тут нужно читать документацию по TFLEX API.NET

/*TFlex.Model.Model2D.Fragment.FileUserData*/
var data = detail.Fragment.GetUserBomData(false);
if (data == null)
continue;
foreach (/*TFlex.Model.Model2D.Fragment.FileUserData.RecordUserData*/var record in data.Records)
{
}

/// Пример итерации по всем стыкам детали. Например, может понадобиться итерация по всем креплениям детали.
/// Вообще можно итерировать сразу по всем креплениям модели. Смотри пример кода ниже.


var joints = detail.Joints.FindAllJoints();
foreach (/*TFlex.Furniture.Model.Joint*/var joint in joints)
{
/*string*/
var scheme = joint.Scheme; /// Имя прикладной схемы стыка
/// Пример итерации по всем креплениям детали

var fixities = joint.FindAllFixities();
foreach (/*TFlex.Furniture.Model.Fixity*/var fixity in fixities)
{
/// Пример получения различных характеристик крепления
/*string*/
var fixityMatrial = fixity.Material; // Материал крепления
/*string*/
var fixityNomenclature = fixity.Nomenclature; // Обозначение матреиала крепления
}
}
}

/// Итерация по всем креплениям
foreach (/*TFlex.Furniture.Model.Fixity*/var fixity in model.Fixity)
{
/// Пример получения различных характеристик крепления
/*string*/
var fixityMaterial = fixity.Material; // Материал крепления
/*string*/
var fixityNomenclature = fixity.Nomenclature; // Обозначение матреиала крепления

/// В большинстве случаев крепления являются комплектами.
/// Каждая комплектующая из комплекта представлена записью в данных для спецификации в файле модели комплекта.
/// Можно добавлять свои поля в записи.
/// В TFlex-мебель в записях используются поля для хранения информации о названии материала комплектующего и его количестве.
/// Ниже приводится код, как в TFlex-мебель выполняется расчет расхода материалов по комплектующим.

/*TFlex.Model.Model2D.Fragment.FileUserData*/
var data = fixity.Fragment.GetUserBomData(false);
if (data == null)
continue;

/// Итерация по комплектующим. Комплектующими могут быть как детали, так и материалы(клей) и оценка трудоёмкости(для подсчета стоимости монтажа)
foreach (/*TFlex.Model.Model2D.Fragment.FileUserData.RecordUserData*/var record in data.Records)
{
String articul = record.Denotation; /// Код изделия или комплекта
if (string.Equals(articul, "КОМПЛЕКТ", StringComparison.OrdinalIgnoreCase))
continue;

String name = record.Name; // Имя комплектующей

/// Крепление не является комплектом, а состоит из одной детали
if (string.IsNullOrEmpty(articul) || name == fixityMaterial)
continue;

String unititem = DrawingsControl.GetUserBOMData(record, "Единицы измерения"); // Единица измерения комплектующей

double fixcount;
string countstr;
String countitem = DrawingsControl.GetUserBOMData(record, "Количество фурнитуры"); // Количество комплектующих в комплекте
if (countitem != null)
{
countstr = countitem != "" ? countitem : record.Amount;
}
else
countstr = record.Amount; // Данные берутся из поля "Количество" (стандартный набор полей в любой записи)

/// Переводим количество комплектующего в цифровую форму
try
{
fixcount = double.Parse(countstr, new System.Globalization.NumberFormatInfo() { NumberDecimalSeparator = "." });
}
catch
{
fixcount = 0;
}
}
}

foreach (/*TFlex.Furniture.Model.Drawer*/var drawer in Model.Drawers)
{
DrawerModel drawermodel = drawer.GetDrawerModel();
if (drawermodel != null)
{
}
}
}
[свернуть]

Последний раз редактировалось topic; 19.07.2012 в 18:18.
topic вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
chamatik (24.07.2012), ribun (22.07.2012), semdizain (20.07.2012), Джекидс (24.07.2012)