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

Возможные функции солида.


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

Приветствую всех форумчан.

Хочу поинтересоваться о возможности солида в следующем деле. В солид был конвертирован эскиз состоящий из множество хаотически расположеных точек в области определеного размера.

Если такая функци чтобы вокруг каждой точки создать окружноть одинакового диаметра?

Прошу всех отвечающих невдаваться в подробности появления конвертированого эскиза и просто ответить возможно ли осуществить указаную выше операцию.

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


Думаю при

эскиз состоящий из множество хаотически расположеных точек в области определеного размера

массив по точкам

не прокатит - ведь массив это нечно упорядоченное....

Думаю, можно с точек снять координаты (в таблицу) и заменить их на нужный блок (можно в ручную - если не очень много)...

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

Да какой нарисуете, такой и будет.

Как говорил тов.Сухов: -"Этт точно ".

Тем более вопрос об ориентаци тел не стоит - сферы ведь, да еще и одинакового диаметра...

Вот только возник вопрос у меня (прямо сию минуту) речь идет о плоском массиве или 3-х мерном?

Т.е. об облаке точек с их 3-х мерном расположении?

В последнеи варианте такой вариаент не прокатит (кламбур).

ИМХО...

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

MFS и ssv22

Как сказал автора топика

В солид был конвертирован эскиз состоящий из множество хаотически расположеных точек

Так что думаю

Да какой нарисуете, такой и будет.

Как говорил тов.Сухов: -"Этт точно ".

не совсем то что надо - эскиз УЖЕ есть, если я правильно понял, конечно.....
Ссылка на сообщение
Поделиться на других сайтах

Если такая функци чтобы вокруг каждой точки создать окружноть одинакового диаметра?

Стандартной функции построения окружностей равного диаметра по облаку точек в эскизе, по моему, в SW нет. Но это довольно легко реализуется через API.
Ссылка на сообщение
Поделиться на других сайтах

MFS и ssv22 Как сказал автора топика

Цитата

В солид был конвертирован эскиз состоящий из множество хаотически расположеных точек

Хаотически расположеные точки м.б. расположены по-разному : или на плоскости или в 3-х мерном пространстве(т.е - облако точек).

И результ м.б. разный...

И вообще о каком SW идет речь?

PS. Опять не указываем версию ...

Это печально, трагично, плачевно, а потом другие голову ломают.......

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

Хаотически расположеные точки м.б. расположены по-разному : или на плоскости или в 3-х мерном пространстве(т.е - облако точек).

И результ м.б. разный...

Согласен - но думаю, в данном случае речь идёт о 2D-эскизе, т.к. они были конвертированы и врядли в 3D-эскиз...

Хотя всё может быть - может это вообще облако частиц в трубе и нужно увидеть движение (шутка)...

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

Тем более вопрос об ориентаци тел не стоит - сферы ведь, да еще и одинакового диаметра...

Речь шла не о сферах, а об окружностях (эскиз). Массив по эскизу для элементов эскиза не работает, только для 3д элементов. Поэтому одной командой не сделать. Как вариант - вытянуть поверхность и её размножить массивом по эскизу, а в новом эскизе преобразовать кромки поверхностей. Но если точек очень много запаришься преобразовывать вручную, надо привлекать API.
Ссылка на сообщение
Поделиться на других сайтах

To Mak82

Если еще интересно, то вот код макроса, который строит окружности с центром в точках в 2-х мерном эскизе.

Option Explicit



Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swSelMgr As SelectionMgr

Dim swSketchMgr As SldWorks.SketchManager

Dim swSketch As SldWorks.Sketch

Dim swSketchPoint As SldWorks.SketchPoint

Dim swSelectData As SldWorks.SelectData



Dim count As Long

Dim bInput As Boolean

Dim bres As Boolean

Dim typePoint As Long



Const dDim As Double = 0.01 ' радиус окружности в метрах, при необходимости можно изменить



Sub main()

	On Error GoTo LineError

	Set swApp = Application.SldWorks

	Set swModel = swApp.ActiveDoc

	If swModel Is Nothing Then

		swApp.SendMsgToUser2 "Загрузите документ SolidWorks-a!", swMbInformation, swMbOk

		Exit Sub

	End If

		

	If swModel.GetType() <> swDocPART Then

		swApp.SendMsgToUser2 "Функция работает только с деталями!", swMbInformation, swMbOk

		Exit Sub

	End If

	

	Set swSelMgr = swModel.SelectionManager

	Set swSelectData = swSelMgr.CreateSelectData

	Set swSketchMgr = swModel.SketchManager

	Set swSketch = swSketchMgr.ActiveSketch

	

	If swSketch Is Nothing Then

		count = swSelMgr.GetSelectedObjectCount

		If count <> 1 Then

			swApp.SendMsgToUser2 "Выберите необходимый эскиз в дереве конструирования!", swMbInformation, swMbOk

			Exit Sub

		End If

		

		If swSelMgr.GetSelectedObjectType2(1) <> swSelSKETCHES Then

			swApp.SendMsgToUser2 "Выберите необходимый эскиз в дереве конструирования!", swMbInformation, swMbOk

			Exit Sub

		End If

		swModel.EditSketch

		Set swSketch = swSketchMgr.ActiveSketch

	End If

	

	bres = swSketch.Is3D()

	If bres Then

		swApp.SendMsgToUser2 "Функция работает только в 2-х мерном эскизе!!", swMbInformation, swMbOk

		swSketchMgr.InsertSketch True

		Exit Sub

	End If

	

	Dim countPoint As Long

	countPoint = swSketch.GetSketchPointsCount2()

	

	bInput = swApp.GetUserPreferenceToggle(swInputDimValOnCreate)

	If bInput Then

		swApp.SetUserPreferenceToggle swInputDimValOnCreate, False

	End If

			

	Dim arrSketchPoint As Variant

	Dim swSegmentFirst As SldWorks.SketchSegment

	Dim swSegmentRest As SldWorks.SketchSegment

	Dim swCenterPoint As SldWorks.SketchPoint

	Dim swSketchArc As SldWorks.SketchArc



	arrSketchPoint = swSketch.GetSketchPoints2()	

	swSketchMgr.AddToDB = True

	

	Dim i As Long

	For i = 0 To countPoint - 1

		Set swSketchPoint = arrSketchPoint(i)

		typePoint = swSketchPoint.Type()

		If typePoint = swSketchPointType_User Then

			If swSegmentFirst Is Nothing Then

				swModel.ClearSelection2 True

				Set swSegmentFirst = swSketchMgr.CreateCircleByRadius(swSketchPoint.X, swSketchPoint.Y, 0#, dDim)

				swModel.ClearSelection2 True

				

				Set swSketchArc = swSegmentFirst

				Set swCenterPoint = swSketchArc.GetCenterPoint2()

				swCenterPoint.Select4 True, swSelectData

				swSketchPoint.Select4 True, swSelectData

				swModel.SketchAddConstraints "sgCOINCIDENT" ' накладывает связь "совпадение" на центр окружности и точку

				swModel.ClearSelection2 True

				

				' следующие 4 строки ставять размер, при необходимости их можно закомментировать

				swSegmentFirst.Select4 True, swSelectData

				Dim swDisplayDimension As SldWorks.DisplayDimension

				Set swDisplayDimension = swModel.AddDiameterDimension2(0.002, 0.002, 0)

				swModel.ClearSelection2 True

			Else:

				Set swSegmentRest = swSketchMgr.CreateCircleByRadius(swSketchPoint.X, swSketchPoint.Y, 0#, dDim)

				swModel.ClearSelection2 True

				

				Set swSketchArc = swSegmentRest

				Set swCenterPoint = swSketchArc.GetCenterPoint2()

				swCenterPoint.Select4 True, swSelectData

				swSketchPoint.Select4 True, swSelectData

				swModel.SketchAddConstraints "sgCOINCIDENT"  'накладывает связь "совпадение" на центр окружности и точку

				swModel.ClearSelection2 True

				

				swSegmentFirst.Select4 True, swSelectData

				swSegmentRest.Select4 True, swSelectData

				swModel.SketchAddConstraints "sgSAMELENGTH" 'накладывает связь "равенство" на окружности

				swModel.ClearSelection2 True

			End If

		End If

	Next i

	

	swSketchMgr.AddToDB = False

	swApp.SetUserPreferenceToggle swInputDimValOnCreate, bInput

	

	Exit Sub

	

LineError:

	

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

Как говорил тов.Сухов: -"Этт точно ".

Тем более вопрос об ориентаци тел не стоит - сферы ведь, да еще и одинакового диаметра...

Вот только возник вопрос у меня (прямо сию минуту) речь идет о плоском массиве или 3-х мерном?

Т.е. об облаке точек с их 3-х мерном расположении?

В последнеи варианте такой вариаент не прокатит (кламбур).

ИМХО...

Речь идет оточках хаотижно расположеных на одной плоскости. В режиме деталь. Версия Солида 2007 Sp.

Mak82

Для решения твоей задачи нужен "Art-punch".

А можно по подробней.

Стандартной функции построения окружностей равного диаметра по облаку точек в эскизе, по моему, в SW нет. Но это довольно легко реализуется через API.

Если можно объясните чтотакое API.

To Mak82

Если еще интересно, то вот код макроса, который строит окружности с центром в точках в 2-х мерном эскизе.

Option Explicit



Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swSelMgr As SelectionMgr

Dim swSketchMgr As SldWorks.SketchManager

Dim swSketch As SldWorks.Sketch

Dim swSketchPoint As SldWorks.SketchPoint

Dim swSelectData As SldWorks.SelectData



Dim count As Long

Dim bInput As Boolean

Dim bres As Boolean

Dim typePoint As Long



Const dDim As Double = 0.01 ' радиус окружности в метрах, при необходимости можно изменить
Ниразу не использовал макрасы в солиде в ближайщее время попробую сделать если не получиться приду с поклоном за разьеснениями. :smile:

Р.S: Извеняюсь что своевремено не вступил в дискусию (был занять)

Конечно не ожидал такого бурного прения претпологалось что будет отрецательный ответ.

Благодарю всех за предоставленую информацию. :clap_1:

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

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

API - это Application Programming Interface. То есть, SW предоставляет через него доступ к своим функциям тем, кто знаком с прграмированием. Используются несколько языков VB, С++, С# и т.д. В самом SW есть встроенный редактор макросов на VBA. Если хочешь попробовать мой код, то в SW Tools->Macro->New откроется редактор, просто скопируй выложенный код, макрос сохрани, а потом Tools->Macro->Run и посмотри что будет...
Ссылка на сообщение
Поделиться на других сайтах

API - это Application Programming Interface. То есть, SW предоставляет через него доступ к своим функциям тем, кто знаком с прграмированием. Используются несколько языков VB, С++, С# и т.д. В самом SW есть встроенный редактор макросов на VBA. Если хочешь попробовать мой код, то в SW Tools->Macro->New откроется редактор, просто скопируй выложенный код, макрос сохрани, а потом Tools->Macro->Run и посмотри что будет...

Спасибо за разяснение.

С предложеным вами кодом я все также и сделал.(Инструменты, макрос, создать новый, копирую код, сохраняю) При нажатии кнопки выполнить код ничего не происходит. Происходит только одно действие когда у меня не загружен документ тогда высвечивается окно "Загрузите документ Солидворкса " загружаю документ Запускаю макрос ничего

Может чтото зависит от версии Солида у меня 2007

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

еще работает функция которая говорит что макрос работает только с деталями и все.

А у вас эскиз разве не в документе детали? Или вы его сконвертировали в документ чертежа?

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

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

Да Эскиз в документе детали. Я просто хоте этим сказать что работают только две функции и дальше дело не идет.

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

To Mak82

Попробуйте заменить строки:

swSketchMgr.AddToDB = True
на строку

swModel.SetAddToDB True
а

swSketchMgr.AddToDB = False
на строку

swModel.SetAddToDB False

P.S. В API SW2007 заменяемых функций просто нет. По всей видимости происходит ошибка. У меня то SW2008. Проверить не могу. Попробуйте пройтись дебаггером.

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

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

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

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

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

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

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

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

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

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

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




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