Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

Add material

Status
Not open for further replies.

Santa123

Mechanical
Oct 2, 2006
80
0
0
PL
Hello,

I am creating a macro, which add material to part, read mass and put it to lblMassValue. Button2 add material to Body but weight is not updated, it stays the same as it was without material.

Code:
Public Class Form1

    Public MyActiveDocument As Document
    Public MyProduct As Product
    Public MyParamMass As Double
    Public MyPart As Part

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MyActiveDocument = GetCATIA.ActiveDocument
        MyProduct = MyActiveDocument.product
        GetCATIA()
    End Sub

    Public Function GetCATIA() As INFITF.Application
        Try
            GetCATIA = GetObject(, "CATIA.Application")
            lblMasaValue.Text = MyParamMass
        Catch NoCATIARunning As Exception
            GetCATIA = CreateObject("CATIA.Application")
        End Try

    End Function

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim CATMatManager As MaterialManager
        Dim MaterialDocPath As String
        Dim MaterialName, MaterialFamilyName As String
        Dim MaterialDocument As Document
        Dim MyMaterial As Material
        Dim MyBody As Body
        Dim LinkMode
        Dim anlysisMaterial As MaterialManager

        MyParamMass = FormatNumber(MyProduct.Analyze.Mass, 2)
        MyPart = GetCATIA.ActiveDocument.Part

        '*************Identify Material ******************
            MaterialName = "Oak"
            MaterialFamilyName = "Wood"

        ' *************Identify the Material Doc Path: *******************
        MaterialDocPath = "C:\Program Files\Dassault Systemes\B27\win_b64\startup\materials\Catalog.CATMaterial" '*

        '**************Modified From the AutomationV5.chm File:
        MaterialDocument = GetCATIA.Documents.Read(MaterialDocPath)
        MyMaterial = MaterialDocument.Families.Item(MaterialFamilyName).Materials.Item(MaterialName)
        CATMatManager = MyPart.GetItem("CATMatManagerVBExt")

        MyBody = MyPart.MainBody

        ' -----------------------------------------------------------
        ' Apply the material on the Product (as a link)
        ' -----------------------------------------------------------
        LinkMode = 1
        CATMatManager.ApplyMaterialOnBody(MyBody, MyMaterial, LinkMode)

        ' -----------------------------------------------------------
        ' Retrieve the material applied on the Product
        ' -----------------------------------------------------------

        MyPart.Update()
        lblMassValue.Update()
        lblMassValue.Text = MyParamMass

    End Sub
End Class
 
Replies continue below

Recommended for you

Hi LucasC

Thank's for response, finaly I found mistake in my code. I only added Call and it works.

Code:
Public Class Form1

    Public MyActiveDocument As Document
    Public MyProduct As Product
    Public MyParamMass As Double
    Public MyPart As Part

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MyActiveDocument = GetCATIA.ActiveDocument
        MyProduct = MyActiveDocument.product
        GetCATIA()
    End Sub

    Public Function GetCATIA() As INFITF.Application
        Try
            GetCATIA = GetObject(, "CATIA.Application")
            lblMasaValue.Text = MyParamMass
        Catch NoCATIARunning As Exception
            GetCATIA = CreateObject("CATIA.Application")
        End Try

    End Function

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim CATMatManager As MaterialManager
        Dim MaterialDocPath As String
        Dim MaterialName, MaterialFamilyName As String
        Dim MaterialDocument As Document
        Dim MyMaterial As Material
        Dim MyBody As Body
        Dim LinkMode
        Dim anlysisMaterial As MaterialManager

        MyParamMass = FormatNumber(MyProduct.Analyze.Mass, 2)
        MyPart = GetCATIA.ActiveDocument.Part

        '*************Identify Material ******************
            MaterialName = "Oak"
            MaterialFamilyName = "Wood"

        ' *************Identify the Material Doc Path: *******************
        MaterialDocPath = "C:\Program Files\Dassault Systemes\B27\win_b64\startup\materials\Catalog.CATMaterial" '*

        '**************Modified From the AutomationV5.chm File:
        MaterialDocument = GetCATIA.Documents.Read(MaterialDocPath)
        MyMaterial = MaterialDocument.Families.Item(MaterialFamilyName).Materials.Item(MaterialName)
        CATMatManager = MyPart.GetItem("CATMatManagerVBExt")

        MyBody = MyPart.MainBody

        ' -----------------------------------------------------------
        ' Apply the material on the Product (as a link)
        ' -----------------------------------------------------------
        LinkMode = 1
        CATMatManager.ApplyMaterialOnBody(MyBody, MyMaterial, LinkMode)

        ' -----------------------------------------------------------
        ' Retrieve the material applied on the Product
        ' -----------------------------------------------------------

        MyPart.Update()

Call ShowMass()

    End Sub

    Sub ShowMass()
        MyParamMass = FormatNumber(MyProduct.Analyze.Mass, 2)
        lblMasaValue.Text = MyParamMass
    End Sub

End Class
 
Status
Not open for further replies.
Back
Top