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

групповое изменение свойств материалов


fol@bzz.ru

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

Уважаемые, подскажите плиз. поиском не нашел. суть - работаем в основном с металом, плотность одинаковая. но на какой то ранней версии солида пришлось ее изменить в шаблоне, уменьшив в 1000 раз, для корректного отображения на чертеже массы. а теперь при совместном использовании деталей с другими конструкторами вылезают бяки, например болт, весящий в 1000 раз больше. подскажите, может есть способ поправить дело, поменяв во всех файлах разом плотность? может есть макрос какой или плагин. заранее спасибо

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


Базу материалов откройте блокнотом, и используйте "найти и заменить" (копию не забудьте перед операцией сделать)

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

все немного сложнее. материал не выбран из списка, а забит вручную в "инструменты-параметры-свойства документа -свойства материала". в шаблоне детали проставлена плотность, выбрана штриховка (изз-за штриховки, кстати, и не использую солидовские материалы). и вопрос об изменении плотности деталей, сделанных из этого шаблона. Хелп! :surrender:

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

А я Вам Солидовские материалы и не показывал. Это мои материалы. Гораздо проще создать свою базу материалов, чем что-то делать в шаблоне. В своей базе у меня и обозначения забиты по ГОСТ и ТУ - никаких проблем - и штриховки любые - и свойства любые - а шаблоны нужно использовать для другого. (Я так думаю, но может и ошибаюсь). Вообще у меня 2 базы материалов + в экстренных случаях использую и Солидовскую.

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

но суть то вопроса в другом - возможно ли относительно быстро поменять плотность в свойствах тысяч уже готовых деталей на другое число :wallbash:

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

Средствами API-интерфейса примерно так (это соотвесвенно для одного документа):

Sub main()

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Set swApp = CreateObject("SldWorks.Application")

Set swModel = swApp.ActiveDoc

'Можно посмотреть предыдущее значение:

Msgbox swModel.getUserPreferenceDoubleValue(swMaterialPropertyDensity)

'Изменить значение плотности, при условии, что не задан материал:

retval = swModel.SetUserPreferenceDoubleValue(swMaterialPropertyDensity, 3 * (10 ^ 3))

'вместо 3 * (10 ^ 3) заменить необходимым значением плотности

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

Я думаю (но может быть и ошибаюсь), что Вам нужно не плотность менять, а в тысячах деталей назначить (поменять) правильный материал, создав, предварительно, свою библиотеку материалов.

Так Вы и на будущее себя оградите от сделанной когда-то "неточности", выбросите "лишние" шаблоны (а я Вам это рекомендую).

Лучше поздно, чем никогда.

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

Средствами API-интерфейса примерно так (это соотвесвенно для одного документа):

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

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

то есть для этого все равно все эти тысячи деталей нужно открыть

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

просто не факт что забытый какой нить болт не увеличит массу сборки на тонну

Увеличит, еще как увеличит.

Вот пример, когда на старте был сделан небольшой шаг не в ту сторону - смещение совсем маленькое, но в пути дало большую погрешность.

Начиная дело - 7 раз отмерь.

Который раз радуюсь, что не поддался на все уговоры и материалы - база материалов, крепеж - ToolBox, шаблонов всего 3 (деталь, сборка, чертеж), Обозначение, Наименование - там где написано в учебнике, имя файла - децимальный номер (уже нажегся на др. комбинациях) и т.д. и т.п.

Чужое горе - снова напоминает о необходимости СТАНДАРТА.

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

Увеличит, еще как увеличит

ну вы бы не каркали-может, не увеличит...

просто не факт что забытый какой нить болт не увеличит массу сборки на тонну... спасибо всем. ..

Я бы вначале проверил, какие плотности у компонентов на самом деле...

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

"""""""""""""""

Option Explicit

Public Enum swUserPreferenceDoubleValue_e

swMaterialPropertyDensity = 7

End Enum

Public i As Long

Public k As Long

Public strArr() As String

Dim swChildName As String

Dim strHideComp As String

Dim swChildModel As ModelDoc2

Dim dDensity As Double

Public Function AddToArr(sStr As String, i As Long, dDensity As Double) As String()

ReDim Preserve strArr(1, i - 1)

strArr(0, i - 1) = sStr

strArr(1, i - 1) = dDensity

End Function

Public Function GetList(swApp As SldWorks.SldWorks, swModel As SldWorks.ModelDoc2, swComp As SldWorks.Component2) As String()

Dim swChildComp As SldWorks.Component2

Dim vChildCompArr As Variant

Dim vChildComp As Variant

Dim strHideCompArr() As String

Dim strHideComp As String

ReDim Preserve strHideCompArr(0)

vChildCompArr = swComp.GetChildren

For Each vChildComp In vChildCompArr

Set swChildComp = vChildComp

swChildName = swChildComp.Name2

Set swChildModel = swChildComp.GetModelDoc

dDensity = swChildModel.GetUserPreferenceDoubleValue(swMaterialPropertyDensity)

i = i + 1

AddToArr swChildName, i, dDensity

If UBound(swChildComp.GetChildren) > 0 Then

GetList swApp, swModel, swChildComp

End If

Next

End Function

Sub main()

Dim swApp As Object

Dim swModel As SldWorks.ModelDoc2

Dim swAssy As Object

Dim swConfig As SldWorks.Configuration

Dim swRootComp As SldWorks.Component2

Dim strHideCompArr() As String

Dim j

Dim RootDir As String

Dim TextV As String

Dim sPath As String

i = 0

ReDim strArr(1, 0)

strArr(0, 0) = ""

strArr(1, 0) = ""

Set swApp = CreateObject("SldWorks.Application")

Set swModel = swApp.ActiveDoc

Set swAssy = swModel

Set swConfig = swModel.GetActiveConfiguration

Set swRootComp = swConfig.GetRootComponent

sPath = swModel.GetPathName

Dim index As Long

index = InStrRev(sPath, "\")

RootDir = Left(sPath, index)

GetList swApp, swModel, swRootComp

TextV = ""

For j = 0 To UBound(strArr, 2)

TextV = TextV & vbCrLf + strArr(1, j)

Next j

If i = 0 Then

MsgBox "The assembly has not Components!"

End

End If

On Error Resume Next

Dim Excel As Object

Dim excelSheet As Object

' Start Excel

Set Excel = GetObject(, "Excel.Application")

If Err <> 0 Then

Err.Clear

Set Excel = CreateObject("Excel.Application")

If Err <> 0 Then

MsgBox "Could not load Excel.", vbExclamation

End

End If

End If

On Error GoTo 0

Excel.Visible = True

Excel.Workbooks.Add

Set excelSheet = Excel.ActiveWorkbook.Sheets(1)

Debug.Print excelSheet.Name

excelSheet.Columns("c").ColumnWidth = 50

excelSheet.Columns("d").ColumnWidth = 20

For k = 1 To UBound(strArr, 2) + 1

excelSheet.range("c" & k).Value = strArr(0, k - 1)

excelSheet.range("d" & k).Value = strArr(1, k - 1)

Next k

On Error GoTo Finish:

excelSheet.SaveAs RootDir + "ListOfDensities"

Excel.Quit

Finish:

End Sub

"""""""""""""""""""""""

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

Я бы вначале проверил, какие плотности у компонентов на самом деле...

А зачем выводить в Excel? Автору топика надо сразу поменять плотность, которая несоответствует нужной. Причем

то есть для этого все равно все эти тысячи деталей нужно открыть

На мой взгляд, метод, предложенный Kelny, оптимальнее. Естесственно с некоторыми доработками. Один раз и навсегда, или до следующих изменений в SW (но вроде менять то здесь нечего). .
Ссылка на сообщение
Поделиться на других сайтах

ну вы бы не каркали-может, не увеличит...

Ну КВА....

материал не выбран из списка, а забит вручную в

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

Здесь только перебор всех файлов. И, может быть, просто назначение "правильного" материала. Во всяком случае действий меньше чем изменение плотности.

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

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

Если с помощью API SW, то, что в лоб, что по лбу. Результат одинаковый....
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Orchestra2603
      Ну, предлагаю такой подход... Не знаю, может это все слишком очевидно, ну хотя бы это по полочкам разложить - тоже полезно.   Вот допустим, есть у вас электродинамический вибровозбудитель. Он как устроен? Есть генератор переменного тока. Он встроен в электрическую цепь, и там есть свои электрические элементы. Но главное, там есть катушка индутивности намонтанная на трубу, а внутри нее подвижная масса. На подвижной массе еще одна катушка, и у той по обмотке течет еще какой-то свой постоянный ток. Когда ток проходит по обмотке трубы, то внутри возникает магнитное поле, а оно действует на ток внутри трубы протекающий по подвижной катушке, и возникает сила Ампера, котоая приводит в движение массу. Сила эта пропорциональна магнитной индукция, а та в свою очередь силе тока (как в подвижной, таки неподвижной катушке, но нас интересует ток в конутре, который переменный). Т.е. ток в контуре, где стоит катушка, выступает в роли внешней возбуждающей силы для подвижной массы. Возможны конечно нюансы и некоторые вариации, но суть вроде как такая.   Если электрическая цепь сложная с кучей контуров, и там натыкано много конденсаторов, резисторов и инудктивностей в каждом контуре, то распределение токов по контурам находится через решение системы линенынх дифференциальных уравнений второго порядка.  Ну, т.е. там по сути тоже куча собственных частот, каждая из которых описывает свой электрический резонансов. Можно также решать задачу на СЗ, и будут собственные вектора, которые описывают соотношения амплитуд и фаз токов в раных контурах, и собственные значения, которые соотвтетсвуют каким-то резонансам. Тогда ЭДС на генераторе выступает в роли внешней силы. В зависимости от распределения элементов и контуров в цепи коэффициент усиления между ЭДС на генераторе и перемещением подвижной массы в трубе в определенном контуре будет меняться. Типа как АЧХ получается, только чисто "электрическая". Это АЧХ чистемы ЭМС, если в вашей терминологии. В параметры этой АЧХ будут входить только параметры электрических элементов схемы.   Можно дальше представить себе, что в каждом контуре цепи воткнут свой генератор, и у каждого своя амплитуда тока и фазовый сдвиг, но всех у всех одна частота. И пускай в каждом контуре есть своя подвижная масса внутри какой-то своей неподвижной катушки. Получается, что есть некоторый вектор правых частей, собранный из ЭДС генераторов в разных контурах, а перемещения подвижных масс в разных контурах - это вектор отклика. Т.е. будет уже матрица частотных харкатеристик (системы ЭМС, если в вашей терминологии), а отклик подвижных масс и внешние возбуждения, будет описываться соотвтетсвующими векторами. В зависимости от того, как распределены амплитуды и фазы ЭДС генераторов по контурам, и какая выбрана частота возбуждения, могут проявляться или не проявляться какие-то резонансы (точно также будет какой-то коэффициент участия, коэффициент динамичности и т.д.). Если в каком-то контуре проявляется резонанс, то в этом контуре на этой частоте будет большой коффициент динамичности по амплитуде тока в этом контуре, и будет пропорционально увеличиваться амплитуда отклика по перемещениям соотвтетсвующей подвижной массы.   Теперь представим, что каждая i-я из этих подвижных масс соединяется с контрукцией - системой МС. Тогда получается так, что да, ток в i-м контуре зависит от электрической АЧХ системы ЭМС, и это влияет на механическую силу, действующую на пожвижную массу в i-м контуре, но вместе с этим свойства механической системы МС могут быть такими, что на этой частоте даже такая увеличенная амплитуда силы в не возбуждает большого механичского оклика (перемещения) в этой конкртеной i-й точке крепления с конструкцией. Т.е. в данном случае, получается, что вы задаете вектор ЭДС генераторво на входе, это все дело умножается на электрическую АЧХ системы ЭМС, и получается вектор механических сил Ампера, действующих на каждую из точек крепления. А дальше этот вектор сил умножается на АЧХ системы МС, чтобы получить вектор отклика конструкции.   Т.е. получается так, что две системы вообще соединяются последвательно: выход из первой служит входом для второй, и их АЧХ разделяются спокойно. В итоге, выходит, что АЧХ можно просто переменожить, чтобы получить итоговую АЧХ суммарной системы ЭМС+МС. Так получается из-за того, что электромагнитное взаимодействие создает механическую силу и влияет на механическое движение, но механическое движение не влиет на электромагнитные взаимодействия в цепи. Так ведь?   Такие, вот, мысли. Сам вообше не спец ни разу по электромагнитизму, так что поправьте, если где-то ошибаюсь.
    • zedowl
      все, разобрался сам, просто поставил глубокое сверление, а не простое, поменял цикл, вместо 81 стал 83, и там Q добавилось, я так понял с размеров диаметра сверла(но это не точно), и в 83 цикле cld17 умножил на 1000
    • gudstartup
      @Malsev прежде чем куда то что то ставить сравнивайте даташит или maininf.txt чтобы понять насколько перед вами аналогичная система.
    • zedowl
      разобрался какой параметр должен поменяться, у меня 81 цикл, но мне нужен другой, как выбрать другой цикл? мне подсказали, что нужно его выбрать в настройках операции, но я не знаю где это  
    • zedowl
      нет, не новость я даже не знаю какой параметр в коде должен меняться, у меня задание, либо из мм в микроны, либо наоборот   как понять какой цикл у меня выводится в программе? я найду этот цикл в EXTCYCLE и добавлю умножение или деление на 1000
    • maxx2000
      для тебя будет новостью что 1 мм это 1000микрон(0,001мм)? Т.е. если у тебя после запятой 3 знака то это уже в микронах.   
    • zedowl
      Я сделал в sprutcam простецкую модель, добавил траекторию сверления и не могу разобраться с циклами. Я совсем в этом не разбираюсь, у меня дипломный проект, помогите пожалуйста) У меня в коде выводится не тот цикл, я не могу найти тот параметр в циклах с 81 по 87
    • astire721
    • maxx2000
      @davidovka только макросы кнопок стандартных видов, но они были всегда. В 11 версии макросы вынесли в отдельный файл, понаблюдаю.  так то я все настройки сразу сохраняю в стартовый config.pro
    • Anatlijj8
      Добрый день хочу автоматизировать больше кд на лестницы и балконные ограждения.
×
×
  • Создать...