Skip to content

Commit

Permalink
dotnet MaterialTable.Add
Browse files Browse the repository at this point in the history
  • Loading branch information
fraguada committed Dec 15, 2023
1 parent f5e692c commit 2b61bcf
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/bindings/bnd_extensions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -680,10 +680,17 @@ BND_FileObject* BND_ONXModel_ObjectTable::FindId(BND_UUID id) const
return rc;
}

void BND_File3dmMaterialTable::Add(const BND_Material& material)
int BND_File3dmMaterialTable::Add(const BND_Material& material)
{
const ON_Material* m = material.m_material;
m_model->AddModelComponent(*m);
ON_ModelComponentReference mr = m_model->AddModelComponent(*m);
const ON_Material* managed_material = ON_Material::FromModelComponentRef(mr, nullptr);
int material_index = (nullptr != managed_material) ? managed_material->Index() : ON_UNSET_INT_INDEX;
if ( material_index < 0 )
{
ON_ERROR("failed to add group.");
}
return material_index;
}

BND_Material* BND_File3dmMaterialTable::IterIndex(int index)
Expand Down
13 changes: 13 additions & 0 deletions src/dotnet/opennurbs/opennurbs_extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3871,6 +3871,19 @@ public DocObjects.Material FindIndex(int index)
{
return __FindIndexInternal(index);
}

/// <summary>
/// Adds a material to the model material table
/// </summary>
/// <param name="material"></param>
/// <returns>The material's index (>=0) is returned. Otherwise, RhinoMath.UnsetIntIndex is returned.</returns>
public int AddMaterial(DocObjects.Material material)
{
IntPtr ptrFile3dm = m_parent.NonConstPointer();
return UnsafeNativeMethods.ONX_Model_AddMaterial(ptrFile3dm, material.ConstPointer());
}


}

/// <summary>
Expand Down
30 changes: 30 additions & 0 deletions src/librhino3dm_native/on_archive.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2924,6 +2924,36 @@ RH_C_FUNCTION int ONX_Model_AddLayer2(ONX_Model* pModel, const RHMONO_STRING* pL
return ON_UNSET_INT_INDEX;
}

RH_C_FUNCTION int ONX_Model_AddGroup(ONX_Model* pModel)
{

if (nullptr == pModel)
return ON_UNSET_INT_INDEX;

ON_Group group;
ON_ModelComponentReference mr = pModel->AddModelComponent(group);
const ON_Group* managed_group = ON_Group::FromModelComponentRef(mr, nullptr);
int group_index = (nullptr != managed_group) ? managed_group->Index() : ON_UNSET_INT_INDEX;
if ( group_index < 0 )
{
ON_ERROR("failed to add group.");
}
return group_index;

}

RH_C_FUNCTION int ONX_Model_AddMaterial(ONX_Model* pModel, ON_Material* material)
{
ON_ModelComponentReference mr = pModel->AddModelComponent(*material, true);
const ON_Material* managed_material = ON_Material::FromModelComponentRef(mr, nullptr);
int material_index = (nullptr != managed_material) ? managed_material->Index() : ON_UNSET_INT_INDEX;
if ( material_index < 0 )
{
ON_ERROR("failed to add group.");
}
return material_index;
}

#if !defined(RHINO3DM_BUILD)
RH_C_FUNCTION bool ONX_Model_GetPreviewImage(const ONX_Model* constModel, CRhinoDib* pRhinoDib)
{
Expand Down

0 comments on commit 2b61bcf

Please sign in to comment.