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

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

Скачал шаблон для C#. Не понятно каким образом нужно создавать элементы? В солиде прописалась но созданную форму нигде не показывает.

сам шаблон в темплейтах, библиотека solidworkstoolswizard.dll зарегана

Или даже так, не пойму как он работает)))) создает свою панель? создает менюху?

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


Скачал шаблон для C#. Не понятно каким образом нужно создавать элементы? В солиде прописалась но созданную форму нигде не показывает.

сам шаблон в темплейтах, библиотека solidworkstoolswizard.dll зарегана

Или даже так, не пойму как он работает)))) создает свою панель? создает менюху?

API SDK установлен ? Шаблон "в темплейтах" по какому пути?

При старте VS в группе "Мои шаблоны" виден ли шаблон "SWCsharpAddin" ?

Меня тут наставили на путь истинный: API SDK SW ставит шаблоны в "C:\Documents and Settings\Администратор\My Documents\...",

а в VS прописан путь к шаблонам "C:\Documents and Settings\Администратор\Мои документы\"

Перекинул шаблоны в папку .../Мои документы/...

и увидел:

При выборе этого шаблона создается Addin к SW - DLL - появляется пункт в меню SW, тулбар.

Там всего 2 кнопки: по одной создается новая деталь SW и строится кубик, по другой создается "Окно св-в".

PS А какие "нужно создавать элементы" ?

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

вот ещё возник вопросик. Надо удалить лист в чертеже. есть два метода (которые я знаю)

1.

bRetSheet = swDraw.ActivateSheet("Sheet1")

bRetSheet = swDraw.Extension.DeleteSelection2(0)
2.
bRetSheet = swDraw.Extension.SelectByID2("Sheet1", "SHEET", 0, 0, 0, [u]False[/u], 0, Nothing, 0)

и оба не работают у меня :lamo:

по второму методу никак не могу понять эту самую False :throw:

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

вот ещё возник вопросик. Надо удалить лист в чертеже. есть два метода (которые я знаю)

1.

bRetSheet = swDraw.ActivateSheet("Sheet1")

bRetSheet = swDraw.Extension.DeleteSelection2(0)
2.
bRetSheet = swDraw.Extension.SelectByID2("Sheet1", "SHEET", 0, 0, 0, [u]False[/u], 0, Nothing, 0)

и оба не работают у меня :lamo:

по второму методу никак не могу понять эту самую False :throw:

вообще то все работает

Option Explicit

Dim swApp As SldWorks.SldWorks

Sub main()



	On Error GoTo LineError

	

	Set swApp = Application.SldWorks

	

	Dim swModel As SldWorks.ModelDoc2

	Set swModel = swApp.ActiveDoc

	

	If swModel Is Nothing Then Exit Sub

	

	If swModel.GetType() <> swDocDRAWING Then Exit Sub

	

	swModel.ClearSelection2 True

	

	Dim bres As Boolean

	Dim strSheet As String

	strSheet = "Sheet2" 'имя удаляемого листа

	bres = swModel.Extension.SelectByID2(strSheet, "SHEET", 0#, 0#, 0#, False, 0, Nothing, swSelectOptionDefault)

	

	If bres <> False Then

		swModel.Extension.DeleteSelection2 swDelete_Absorbed

	End If

	

	swModel.ClearSelection2 True

	Exit Sub

LineError:



End Sub

Шестой аргумент в функции SelectByID2 в данном случае не имеет особого значения какой он будет. Перед этой функцией была другая ClearSelection2(), которая снимала все выбранные объекты на листе чертежа. Если бы ее не было, то при False очищалcя бы список ранее выбранных объектов и добавлялся только последний выбранный, при True последний выбранный добавляется к ранее выбранному списку.

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

Shvg

Чьорт. забыл после строчки с SelectByID2 забыл расскомментить строку с DeleteSelection2

Спасибо!

Возникла вот какая непонятная проблемка, см. скрин. Создаю для каждой конфиги свои листы чертежа и вставляю в них Вид Развертка. Для первой конфигурации виды создаются так как мне надо. При следующем проходе (это всё делается в цикле) для другой конфигурации видны только линии сгиба. В чём может быть проблема? Может надо сделать какое-нито обновление для модели или чертежа? ставил ForceRebuild3 (topOn) - не помогает

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

Возникла вот какая непонятная проблемка, см. скрин. Создаю для каждой конфиги свои листы чертежа и вставляю в них Вид Развертка. Для первой конфигурации виды создаются так как мне надо. При следующем проходе (это всё делается в цикле) для другой конфигурации видны только линии сгиба. В чём может быть проблема? Может надо сделать какое-нито обновление для модели или чертежа? ставил ForceRebuild3 (topOn) - не помогает

Попробуйте, когда пройдете весь цикл, воспользоваться функцией retval = ModelDoc2.EditRebuild3 ( ). У меня все нормально. Светофоры в дереве гаснут. :smile:

Вид, надеюсь, вставляете функцией CreateFlatPatternViewFromModelView3?

P.S. SW2011SP1, WinXPx32 SP3

post-3876-1294958654_thumb.jpg

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

пасиб, попробую)

конечно через CreateFlatPatternViewFromModelView3

и что удивительно, "чудачит" только на втором проходе (если больше чем 2 конфиги).. на остальных всё отлично

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

как в C# выделить созданную линию? Или чем заменить Select?

код в VB выглядит так:

Set Line2 = Part.CreateLine2(X2, Y1, 0, X1, Y1, 0)

	Line2.Select (True)
Ссылка на сообщение
Поделиться на других сайтах

как в C# выделить созданную линию? Или чем заменить Select?

код в VB выглядит так:

Set Line2 = Part.CreateLine2(X2, Y1, 0, X1, Y1, 0)

	Line2.Select (True)

Можно так, например:

private void CreateLine(ModelDoc2 swModel)

		{

			SelectionMgr swSelMgr = swModel.ISelectionManager;

			SelectData swSelectData = swSelMgr.CreateSelectData();

			double dX1 = 0.05, dY1 = 0.05, dX2 = 0.15, dY2 = 0.1;

			SketchManager swSketchMgr = swModel.SketchManager;

			SketchSegment swSketchSegment = swSketchMgr.CreateLine(dX1, dY1, 0, dX2, dY2, 0);

			swSketchSegment.Select4(true, swSelectData);

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

а если нужно выделить 2 созданные линии и дугу?

что то вроде этого?

swSelMgr = (SelectionMgr)swModel.SelectionManager;

			SelectedObject = (object)swSelMgr.GetSelectedObject2(2);

задача: выделить 2 линии с дугой и залить всё solid штриховкой.

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

а если нужно выделить 2 созданные линии и дугу?

что то вроде этого?

swSelMgr = (SelectionMgr)swModel.SelectionManager;

			SelectedObject = (object)swSelMgr.GetSelectedObject2(2);
Функцией GetSelectedObject() получаете объекты уже выделенные ранее, например, мышкой или функцией SelectByID2.

задача: выделить 2 линии с дугой и залить всё solid штриховкой.

Если строите линии и дуги програмно, то для того, чтобы залить контур не обязятельно эти сегменты выделять. Вот пример кода, который у меня, с небольшими модификациями (потому что меняется API SW), работает уже много лет. Естественно, упрощенный.

private void CreateSector(ModelDoc2 swModel)

		{

			// это только пример!!!!!



			//функция работает только в чертежах

			int docType = swModel.GetType();

			if (docType != (int)swDocumentTypes_e.swDocDRAWING)

				return;



			IDrawingDoc swDrawing = (IDrawingDoc)swModel;

			IView swView = swDrawing.IActiveDrawingView;

			// должен быть активирован вид на чертеже. В тесте был создан пустой вид

			if (swView.Type == (int)swDrawingViewTypes_e.swDrawingSheet)

				return;



			double dScaleView = swView.ScaleDecimal; 



			double[] dPosition = new double[2];

			dPosition = (double[])swView.Position;

			double posView_X = dPosition[0];

			double posView_Y = dPosition[1];





			double dRadius = 0.05; // значения радиуса взяты с потолка

			double d_X = dRadius / 4, d_Y = dRadius / 4;



			ISketchManager swSketchMgr = swModel.SketchManager;			

			ISketchSegment swSketchSegment1 = swSketchMgr.CreateLine(0.0, 0.0, 0.0, dRadius, 0.0, 0.0);			

			ISketchSegment swSketchSegment2 = swSketchMgr.CreateLine(0.0, 0.0, 0.0, 0.0, dRadius, 0.0);

			ISketchSegment swSketchSegment3 = swSketchMgr.CreateTangentArc(0.0, dRadius, 0.0, dRadius, 0.0, 0.0, (int)swTangentArcTypes_e.swRight);



			swModel.ClearSelection2(true);

			try

			{

				SketchHatch swSketchHatch = swSketchMgr.CreateRegionHatch(posView_X + d_X * dScaleView, posView_Y + d_Y * dScaleView, 0.0, 0, 0, 0, "", "");

				if (swSketchHatch != null)

					swSketchHatch.SolidFill = true;

			}

			catch { }

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

я так понял, это действует если больше нет линий в виде?

double[] dPosition = new double[2];

			dPosition = (double[])swView.Position;

			double posView_X = dPosition[0];

			double posView_Y = dPosition[1];
т.е. мы строим Hatch выделив все линии в виде и в эскизе?
Ссылка на сообщение
Поделиться на других сайтах

Иногда при запуске программы (отладке) solidworks вывешивает окошко о сборе данных и виснет - программа не запускается. Решение:

32bit machine:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

x64 machine:

C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727

and type the following command:

ngen.exe executeQueueditems

This should cause .NET to compile all .NET components that have been queued up as soon as possible instead of in the background when the machine is idle.

The .NET components in the queue may come from SolidWorks, 3rd party applications based on .NET, and the .NET framework itself.

On a 64-bit machine, please invoke the above command from both a 32-bit and a 64-bit DOS command prompt.

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

Как повернуть деталь в сборке? В смысле как это сделать через API? Сколько ни копался в <noindex>справочнике</noindex> не нашёл подходящую функцию. Если записать макрос с поворотом детали, то в него попадает функция RotateComponent(), но она не поворачивает деталь, а только вызывает появление "Rotate Component PropertyManager page", и параметров у неё никаких нет. Какой функцией можно повернуть деталь, скажем, на 45° вокруг оси Х?

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

Как повернуть деталь в сборке? В смысле как это сделать через API? Сколько ни копался в <noindex>справочнике</noindex> не нашёл подходящую функцию. Если записать макрос с поворотом детали, то в него попадает функция RotateComponent(), но она не поворачивает деталь, а только вызывает появление "Rotate Component PropertyManager page", и параметров у неё никаких нет. Какой функцией можно повернуть деталь, скажем, на 45° вокруг оси Х?

Вот из этого справочника пример:

"Rotate Assembly Component on Axis Using IDragOperator::Drag Example (VBA)" :

"This example shows how to rotate an assembly component about an assembly axis using IDragOperator::Drag

...code..."

А вообще-то надо смотреть в области `MathUtility`, `MathTransform` и др. ( или `IMathUtility`) смотреть. Там задается матрица трансформации объекта (или перемещение, или вращение, или и то и другое)...

PS. какой у Вас язык программирования?

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

О, как вовремя уведомление в ящик свалилось, я как раз разобрался, теперь тут опишу свой опыт.

Суть в том, что "повернуть" в Solidworks нельзя, вместо этого нужно задавать сопряжения базовых плоскостей с нужными углами.

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

О, как вовремя уведомление в ящик свалилось, я как раз разобрался, теперь тут опишу свой опыт.

какое-такое "уведомление в ящик свалилось" ? :rolleyes:

Суть в том, что "повернуть" в Solidworks нельзя, вместо этого нужно задавать сопряжения базовых плоскостей с нужными углами.

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

Там проблемы будут с выравниванием...

Повторяю вопрос: на чем пишите?

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

Можно ли управлять дизайном PropertyManagerPage (та, которая появляется слева при жмакании кнопочки гденить в меню/в панели/в табе)

в шаблоне аддона есть тока класс UserPMPAge - дизайнера нет.

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

какое-такое "уведомление в ящик свалилось" ?

Почтовое. В почтовый ящик же и свалилось.

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

Там проблемы будут с выравниванием...

Расскажите подробнее. Я слушаю очень внимательно.

Повторяю вопрос: на чем пишите?

C#. Но разве это важно? API практически одинаков для всех языков.
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




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