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

прошу помощи в написании макроса для 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 пользователей

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




  • Сообщения

    • ALEX 141
      Прямо для всех 0i-TF и 0i-TD с такой же РГ и таким же сервоусилителем.   Чёт вы цитату не оттуда выдернули.
    • vad0000
      - Раньше было. Насос включается и выключается этой кнопкой - Сейчас. После подачи питания, насос сразу включается. Отключается также этой кнопкой.   Все правильно?
    • Ветерок
      Ели Солид не потеряет связи той сборки с исходной многотельной деталью, то все изменения в многотельной детали отразятся в деталях сборки.
    • Andrey_kzn
      Скорее всего TOOLBOX вы не найдёте.  такие вещи покупались под конкретные проекты, а насколько мне известно, не было продано в России ни одного экземпляра Sinumerik ONE не в составе станка. К тому же надо точно знать версию портала, в котором писался проект для станка, чтобы его успешно  выгрузить. (проект) Или же надо иметь исходый проект PLC.  Есть некоторый опыт в отладке проекта для 840DSL в портале 15.1. Там NCU c контроллером 319PN/DP. Если нет исходного проекта, выгрузить его из контроллера не получается. К обращению из программы к входам\выходам.  В программе можно обращаться к дискретным входам\выходам NCK, вида $A_IN[x] и $A_OUT[x] коих имеется 32 входа и 32 выхода. Это всё есть в документации. Но для этого в PLC должно быть что-то типа этого: A I 4.3 =  DB10.DBX[х], A I 4.4 =  DB10.DBX[х] и т.д, для входов, и соответственно A DB10.DBX[х] = Q5.3 для выходов например. Тогда можно будет прописывать условия в вашем цикле, например: IF  $A_IN[x] = 0 GOTO N10 ELSE GOTO N20 ENDIF В вашем случае вам надо настроить задержку выполнения дальнейших действий через G4 Fхх в цикле где у вас выполняется М71. Так будет проще всего. А если хотите  по датчику, то надо редактировать PLC. Просто так туда лезть крайне не рекомендуется
    • Катугин
      Думаю вряд ли вы последовательно делали такое количество тел. Возможно в многотельную деталь добавляете готовые тела, а те в свою очередь также могут быть много тельными. Я к примеру раньше вставляя какой нибудь узел доставшийся от товарищей, получал большой список твердых тел. Стал смотреть там куча шайбочек, винтиков, гаечек и т.д. и т. п.. После чего решил в больших проектах, где не нужно разбивать вставляемый многотел, стараюсь скомбинировать в одно или минимум тел.    Преобразовать это дело в сборку не всегда полезно. В многотеле проще отредактировать сразу несколько тел, уже потом перевести в сборку.
    • maxx2000
      а если отключить итерации?
    • alexashh
      Работаю в разных программах и столкнулся с похожей проблемой - в разном софте вращение и панорамирование завязаны на разные сочетания и при одновременной работе невероятно путаешься. Решил проблему покупкой мыши с двумя боковыми кнопками(Xiaomi Mi Dual Mode Silent, если кому-то интересно. Мышь хорошая, но мелковата для длительной работы) и программой X-Mouse Button Control. Там назначил профили для каждого приложения так чтобы панорамирование было на боковую кнопку. Мне очень удобно, а программа занимает 4 Мб оперативной памяти (интересно сколько занимает софт от мышек logi)
    • SecretOON
      Нет насос включается и отключается кнопкой,как на фото выше(раньше этой кнопкой можно сразу два дела делать-вкл и отк насос и мотор, одновременно естественно),аварийной отключают сам мотор. В понедельник выйду на работу,предоставлю фото 8 страницы.
    • lem_on
      Либо оригинальный оператор подвинул датчик. 
    • boomeeeer
      В таком случае придётся лезть в логику и прописывать правильно логику, чтобы было ожидание по датчику зажима
×
×
  • Создать...