Приложение для раскроя CatiaC#

Место общения программистов C#
Anonymous
Приложение для раскроя Catia

Сообщение Anonymous »

В CATIA V5 нет функции раскроя, поэтому я хотел создать приложение для раскроя на C#.
Во-первых, я начинаю с открытия файла продукта с частью, которая имеет ограничение моего материала. Я дал ему размеры x и y для ограничения следующим образом:

Код: Выделить всё

 INFITF.Application catiaApp = (INFITF.Application)Marshal.GetActiveObject("CATIA.Application");

Documents catDocuments = catiaApp.Documents;
PartDocument partDoc = (PartDocument)catDocuments.Add("Part");
Part part = partDoc.Part;

Bodies bodies = part.Bodies;
MECMOD.Body body = bodies.Item("PartBody");
Sketches sketches = body.Sketches;

OriginElements originElements = part.OriginElements;
Reference planeXY = (Reference)originElements.PlaneXY;

Sketch sketch = sketches.Add(planeXY);

Factory2D factory2D = sketch.OpenEdition();

double xValue = Convert.ToDouble(xTextBox.Text);
double yValue = Convert.ToDouble(yTextBox.Text);

Point2D point1 = factory2D.CreatePoint(xValue, yValue);
Point2D point2 = factory2D.CreatePoint(0, yValue);
Point2D point3 = factory2D.CreatePoint(xValue, 0);
Point2D point4 = factory2D.CreatePoint(0, 0);

Line2D line1 = factory2D.CreateLine(0, yValue, xValue, yValue);
line1.StartPoint = point2;
line1.EndPoint = point1;

Line2D line2 = factory2D.CreateLine(xValue, yValue, xValue, 0);
line2.StartPoint = point1;
line2.EndPoint = point3;

Line2D line3 = factory2D.CreateLine(xValue, 0, 0, 0);
line3.StartPoint = point3;
line3.EndPoint = point4;

Line2D line4 = factory2D.CreateLine(0, 0, 0, yValue);
line4.StartPoint = point4;
line4.EndPoint = point2;

sketch.CloseEdition();
part.Update();
Затем я создал список всех частей кошки, которые мне нужны для вложения, и выбрал поверхность для области вложения:

Код: Выделить всё

 OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "CATIA Part Files (*.CATPart)|*.CATPart";
dialog.Multiselect = true;
if (dialog.ShowDialog() == DialogResult.OK)
{
foreach (string file in dialog.FileNames) // Seçilen tüm dosyalar
{
string fileName = System.IO.Path.GetFileName(file); // Yalnızca dosya adını alır
dataGridView1.Rows.Add(fileName, 1); // İkinci sütuna otomatik olarak "1" yazdırılır

// CATIA'da dosyayı aç
try
{
catiaApp.Documents.Open(file); // Her dosyayı CATIA'da aç
PartDocument partDocument = (PartDocument)catiaApp.ActiveDocument;
Part part = partDocument.Part;

Selection selection = partDocument.Selection;
object[] filter = { "Face" };
string status = selection.SelectElement2(filter, "", false);

if (status == "Normal")
{
Reference selectedFace = (Reference)selection.Item(1).Reference;

HybridShapeFactory hybridShapeFactory = (HybridShapeFactory)part.HybridShapeFactory;

HybridShapeInverse hybridShapeInverse = hybridShapeFactory.AddNewInverse(selectedFace, -1);

HybridBodies hybridBodies = part.HybridBodies;
HybridBody hybridBody = hybridBodies.Item("Geometrical Set.1");

hybridBody.AppendHybridShape(hybridShapeInverse);
part.InWorkObject = hybridShapeInverse;
part.Update();

Reference reference2 = part.CreateReferenceFromObject(hybridShapeInverse);
HybridShapeBoundary hybridShapeBoundary = hybridShapeFactory.AddNewBoundaryOfSurface(reference2);

hybridBody.AppendHybridShape(hybridShapeBoundary);
part.InWorkObject = hybridShapeBoundary;
part.Update();
}
else
{
MessageBox.Show("Bir yüz seçilmedi. İşlem iptal edildi.");
}
}
catch (Exception ex)
{
MessageBox.Show($"Dosya açılamadı: {fileName}\nHata: {ex.Message}");
}
}
}
Теперь я открою продукт, добавлю свою прямоугольную ограничительную часть x y, а затем начну вставлять свои вложенные части...
Но есть кое-что выключенный. Как мне сделать итерации вложения в catia?
У меня есть идея размещения частей из перевода, вращения. Что касается ограничений, я могу использовать ограничение для моего предельного прямоугольника и между частями со смещением, которое я ввел в текстовое поле.
С чего мне начать расчет вложенных частей?
Мое приложение

Подробнее здесь: https://stackoverflow.com/questions/790 ... pplication

Вернуться в «C#»