Из Help'а Инвентора The Material object supports the RenderStyle property that allows you to define which render style is associated with a material. By default, the render style applied to a part is the render style associated with the material. The sample below gets a specific Material object and sets its render style. Dim oPartDoc As PartDocument Set oPartDoc = ThisApplication.ActiveDocument
' Get a specific material. Dim oMaterial As Material Set oMaterial = oPartDoc.Materials.Item("Aluminum-6061")
' Get a specific render style. Dim oRenderStyle As RenderStyle Set oRenderStyle = oPartDoc.RenderStyles.Item("Orange")
' Assign a render style. oMaterial.RenderStyle = oRenderStyle
Да , я бы еще добави перед Set oRenderStyle = oPartDoc.RenderStyles.Item("Orange") Dim oControlDef As ControlDefinition
Set oControlDef = ThisApplication.CommandManager.ControlDefinitions.Item("AppRenderStyleComboCmd") oControlDef.Execute Что бы появился стандартный ComboBox ( если он уже есть в Tools'ах, то появиться его alias), где можно выбрать указателем цвета Инвентора ( As Material,.... и т.д).
>Витек Не получается. Когда мы назначаем цвет детали он в редакторе стилей делается активным. Я делал программно его активным в редакторе стилей, но на экране деталь не меняла свой цвет :(
Я так понимаю - нужно пробежаться по всей колекции материалов для активного документа (ipt ), найти активный в данный момент материал ( For Each oNewMaterial In oBMaterial) и для него выбрать свое рендеринг( цвет)
Строчка: Set oNewMaterial = ListDoc.Materials.Add(Mater, Den)
ListDoc.ComponentDefinition.Material = oNewMaterial Это для помещения в колекцию нового материала.
Бывает наоборот , если поставить цвет Default , а потом менять материал , то цвет по мере изменения типа материала - Не меняется.
Все остальное должно работать. Может функция UpdateFromGlobal() , если вы ее ипользуете, переобозначет ваши изменения?
Мой код:
Public ListDoc As PartDocument ..... Set ListDoc = ThisApplication.ActiveDocument ......
Public Sub CreateMaterial(Mater As String, Den As Double) ' имя материала, плотность ' Set a reference to the part document. ' This assumes a part document is active. ' Create a new material. Dim oNewMaterial As Material Dim oBMaterial As Materials Set oBMaterial = ListDoc.Materials For Each oNewMaterial In oBMaterial If oNewMaterial.Name Like Mater Then ' Если создаваемый материал уже есть , то только выбрать цвет мат. GoTo IsMat End If Next oNewMaterial Set oNewMaterial = ListDoc.Materials.Add(Mater, Den)
Бывает наоборот , если поставить цвет Default , а потом менять материал , то цвет по мере изменения типа материала - Не меняется.
Все остальное должно работать. Может функция UpdateFromGlobal() , если вы ее ипользуете, переобозначет ваши изменения?
Мой код:
Public ListDoc As PartDocument ..... Set ListDoc = ThisApplication.ActiveDocument ......
Public Sub CreateMaterial(Mater As String, Den As Double) ' имя материала, плотность ' Set a reference to the part document. ' This assumes a part document is active. ' Create a new material. Dim oNewMaterial As Material Dim oBMaterial As Materials Set oBMaterial = ListDoc.Materials For Each oNewMaterial In oBMaterial If oNewMaterial.Name Like Mater Then ' Если создаваемый материал уже есть , то только выбрать цвет мат. GoTo IsMat End If Next oNewMaterial Set oNewMaterial = ListDoc.Materials.Add(Mater, Den)
cсдраствуйте.Уменя трабл и я незнаю как его решить.....
если взять "старый" парт участвующий в сборке то немогу изменить материал,их вообще нету(((( а если создать новый эскиз то все ОК...выбирай сколько хочеш....
помогите плз,т.к. надо нагрузки проверить а материал неназначен........
Все даты в формате GMT
3 час. Хитов сегодня: 3
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет