Перейти к публикации

прошу помощи в написании макроса для SW на C#


Рекомендованные сообщения

всем привет.

очень нужна помощь в написании макроса. нужно построить эскиз и объём. нужен знающий человек.

кому не лень можно писать здесь или стучаться в аську по номеру 405388649. буду очень благодарен)

ПОСТАНОВКА ЗАДАЧИ: написать макрос, который исходя из параметров пользователя расчитывает и строит зубчатое калесо 3d.

Изменено пользователем MetalKrot
Ссылка на сообщение
Поделиться на других сайтах


Непонятна задача, но вот код для построения цилиндрика

public void Main()

		{

			IModelDoc2 swModel = swApp.IActiveDoc2;

			if (swModel == null)

			{

				string message = "Загрузите документ SolidWorks-a!";

				MessageBox.Show(message, "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);

				return;

			}

			if (swModel.GetType() != (int)swDocumentTypes_e.swDocPART)

			{

				string message = "Макрос работает только с документом детали (*.sldprt)!";

				MessageBox.Show(message, "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);

				return;

			}

			IPartDoc swPart = (IPartDoc)swModel;

			object[] objBodies = (object[])swPart.GetBodies2((int)swBodyType_e.swAllBodies, false);

			if (objBodies != null)

			{

				string message = "В детали уже построены тела! Далее макрос не будет работать!";

				MessageBox.Show(message, "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);

				return;

			}



			ISketchManager swSketchMgr = swModel.SketchManager;

			ISketch swSketch = swSketchMgr.ActiveSketch;

			if (swSketch == null)// если эскиз не активный, то создаем активный эскиз на Plane1 в моем случае

			{

				bool bresult = swModel.Extension.SelectByID2("Plane1", "PLANE", 0.0, 0.0, 0.0, false, 0, null, (int)swSelectOption_e.swSelectOptionDefault);

				if (!bresult)

				{

					string message = "Плоскость для эскиза в программе не выбрана";

					MessageBox.Show(message, "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);

					return;

				}

				swSketchMgr.InsertSketch(true);

			}



			//рисуем окружность радиусом 12мм

			ISketchSegment swSketchSeg_1 = swSketchMgr.CreateCircleByRadius(0.0, 0.0, 0.0, 0.012);



			// Далее делаем Extrude на длину 50мм

			IFeatureManager swFeatMgr = swModel.FeatureManager;

			IFeature swFeature = swFeatMgr.FeatureExtrusion2(true, false, false, (int)swEndConditions_e.swEndCondBlind, (int)swEndConditions_e.swEndCondBlind,

															 0.05, 0.0, false, false, false, false, 0.0, 0.0, false, false, false, false, true, false, true,

															 (int)swStartConditions_e.swStartSketchPlane, 0.0, false);

			



		}
Ссылка на сообщение
Поделиться на других сайтах

очень признателен. большое спасибо! вот только я эту же задачу оформил немножко подругому:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using SolidWorks.Interop.sldworks;

using SolidWorks.Interop.swconst;



namespace Macro1.csproj

{

	public partial class Form1 : Form

	{

		public Form1()

		{

			InitializeComponent();

		}



		private void button1_Click(object sender, EventArgs e)

		{

			double L = double.Parse(textBox1.Text);

			double B = double.Parse(textBox2.Text);

			ModelDoc2 swDoc = null;

			bool boolstatus = false;

			SldWorks swApp = new SldWorks();

			swDoc = (ModelDoc2)swApp.ActiveDoc;

			boolstatus = swDoc.Extension.SelectByID2("Сверху", "PLANE", 0, 0, 0, false, 0, null, 0);

			swDoc.SketchManager.InsertSketch(true);

			swDoc.ClearSelection2(true);

			SketchSegment skSegment = null;

			skSegment = swDoc.SketchManager.CreateCircle(0, 0, 0, L, 0, 0);

			swDoc.ClearSelection2(true);

			swDoc.SketchManager.InsertSketch(true);

			swDoc.ViewZoomtofit2();



			swDoc.ShowNamedView2("*Триметрия", 8);

			swDoc.ClearSelection2(true);

			boolstatus = swDoc.Extension.SelectByID2("Эскиз1", "SKETCH", 0, 0, 0, false, 0, null, 0);

			Feature myFeature = null;

			myFeature = ((Feature)(swDoc.FeatureManager.FeatureExtrusion2(true, false, false, 0, 0, B, 0.01, false, false, false, false, 0.01745329251994, 0.01745329251994, false, false, false, false, true, true, true, 0, 0, false)));

			swDoc.ISelectionManager.EnableContourSelection = false;







			Application.Exit();

								   

		}



	}

}

хотелось бы найти побольше примеров)

насчет непонятной задачи.

ЗАДАЧА:

создать библиотеку (в моём случае макрос), в котором будет присутствовать форма-окно. по параметрам, определяемым пользователем, необходимо построить зубчатое калесо.

расчет самого калеса у меня есть, тоесть мне остается создать сам макрос и "научить" его правильно считать и строить)))

Изменено пользователем MetalKrot
Ссылка на сообщение
Поделиться на других сайтах

ЗАДАЧА:

создать библиотеку (в моём случае макрос), в котором будет присутствовать форма-окно. по параметрам, определяемым пользователем, необходимо построить зубчатое калесо.

расчет самого калеса у меня есть, тоесть мне остается создать сам макрос и "научить" его правильно считать и строить)))

1. Большинство макросов и программ такого типа не строят модель с нуля, а изменяют уже существующую модель/шаблон.

2. Возможно поможет инструмент DriveWorks:

Программа DriveWorksXpress проста в использовании и обладает уникальными функциональными возможностями, дополняющими возможности проектирования программного обеспечения SolidWorks. Для получения дополнительной информации о DriveWorks посетите веб-узел www.driveworks.co.uk/more.html.

Продукт DriveWorks обеспечивает еще более высокую производительность и гибкость.

Альтернативные форматы файлов для моделей и чертежей (например, SolidWorks eDrawings, DXF, Parasolid).

Инструменты чертежа для масштабирования, изменения позиций видов и управления размерным текстом.

Инструменты для настройки форм, включения графики и создание модулей в системе Word или Excel.

Инструменты для расположения или замены файлов.

SQL-сервер баз данных, который может интегрироваться с любой базой данных ODBC для выполнения импорта и экспорта данных проектов.

Импорт данных из электронных таблиц Excel.

Поддержка макросов и выбора элементов.

Формирование технологии перемещений и организации рабочего процесса для управления созданием технических требований и автоматизации выполнения задач в отделах.

Технология DriveWorks Live для публикации данных в сети Интернет.

3. Возможно, GearTrax: <noindex>http://www.solidworks.ru/products/geartrax/</noindex>

4. Или даже MechSoft for SolidWorks

Ссылка на сообщение
Поделиться на других сайтах

дело в том, что это курсовой проект. тоесть задача поставлена однозначно: макрос на C#. других вариантов нету.

Ссылка на сообщение
Поделиться на других сайтах

дело в том, что это курсовой проект. тоесть задача поставлена однозначно: макрос на C#. других вариантов нету.

Шарп дак шарп.

Но рекомендую все-таки не "строить" а "изменять". Иначе:

1. слишком много операций по построению. непродуктивный труд по написанию кода построения

2. как быть с уже существующей моделью, которую хотим изменить?

Ссылка на сообщение
Поделиться на других сайтах

развитие модели будет следующее:

1. расчет зубчатого колеса

2. построение эскиа

3. вытягивание эскиза

4. вырез отверстий в ступице

5 создание фасок

вроде бы всё.

проблема на данном этапе - создание и редактирование эскиза з.колеса. тоесть конкретно создать окружность, потом на ней зубья.

Ссылка на сообщение
Поделиться на других сайтах

развитие модели будет следующее:

1. расчет зубчатого колеса

...

А Вы пробовали такое средство SW как "Запись макроса" ?

Включаете этот режим, строите, допустим, окружность, потом "конец записи", и смотрим/изучаем полученный макрос...

PS. некоторые операции SW не записывает в макрос! Так что тут надо разумно подходить к результату...

Ссылка на сообщение
Поделиться на других сайтах

вот именно что не записывает, поэтому к вам и обратился)))

Записывает. Но на Васике, в Ц-шарп переводить надо будет. Но над п.2 моего прошлого поста лучше поразмыслить.
Ссылка на сообщение
Поделиться на других сайтах

Записывает. Но на Васике, в Ц-шарп переводить надо будет. Но над п.2 моего прошлого поста лучше поразмыслить.

Почему не записывает?! И что там переводить? VisualStudio нуно иметь на ПК!

Уж эти-то операции:

"проблема на данном этапе - создание и редактирование эскиза з.колеса. тоесть конкретно создать окружность, потом на ней зубья." всяко должен записать и на C# и на С++...

Щас попробую...

Ссылка на сообщение
Поделиться на других сайтах

вот именно что не записывает, поэтому к вам и обратился)))

Записывает, записывает... Тут главное не торопиться...

Подробнее Ваши действия!!!

Вот, пожлста:

post-5350-1273594934_thumb.jpg

Ссылка на сообщение
Поделиться на других сайтах

хорошо, а теперь помогите плз кто-нибудь с функцией кругового массива. функция выглядит так:

virtual Feature FeatureCircularPattern2( 

   int Num,

   double Spacing,

   bool FlipDir,

   string DName,

   bool GeometryPattern

)

хотя вы это можете сами посмотреть в api справке.

вопрос вот в чем: я выбираю тело для массива, но не могу выбрать ОСЬ. тоесть у меня не получается написать функцию, которая выбарает к примеру цилиндрическую грань. ПОМОГИТЕ ПЛЗ ! ! !

Ссылка на сообщение
Поделиться на других сайтах

упс... прошу прощения. нашел решение. всем спасибо за внимание.

я вижу здесь ооочень мало людей, знающих макросы...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.



×
×
  • Создать...