internal void Pack(Model model, SU.EntitiesRef entitiesRef) { CompDef componentDefinition = model.components[ComponentName]; // We might be making a forward reference, so guarantee // that the ComponentDefinition has a SketchUp pointer. componentDefinition.GuaranteeReference(); SU.ComponentDefinitionRef componentDefinitionRef = componentDefinition.componentDefinitionRef; SU.ComponentInstanceRef componentInstanceRef = new SU.ComponentInstanceRef(); SU.ComponentDefinitionCreateInstance( componentDefinitionRef, componentInstanceRef); SU.EntitiesAddInstance( entitiesRef, componentInstanceRef, null); SU.ComponentInstanceSetName( componentInstanceRef, InstanceName); SU.ComponentInstanceSetTransform( componentInstanceRef, Transform.SUTransformation); if (MaterialName != null) { Material material = null; try { material = model.materials[MaterialName]; } catch (Exception e) { string msg = "\nCould not find a material named " + MaterialName; throw new Exception(e.Message + msg); } SU.DrawingElementRef drawingElementRef = SU.ComponentInstanceToDrawingElement(componentInstanceRef); SU.DrawingElementSetMaterial( drawingElementRef, material.suMaterialRef); } }
void UnpackComponents(SU.ModelRef modelRef) { SU.ModelGetNumComponentDefinitions(modelRef, out long count); SU.ComponentDefinitionRef[] componentDefinitionRefs = new SU.ComponentDefinitionRef[count]; long len = count; SU.ModelGetComponentDefinitions(modelRef, len, componentDefinitionRefs, out count); foreach (SU.ComponentDefinitionRef componentDefinitionRef in componentDefinitionRefs) { CompDef component = new CompDef(componentDefinitionRef); components.Add(component.Name, component); } }
/// <summary> /// Include a ComponentDefinition in a Model. /// </summary> /// <param name="componentDefinition"></param> public void Add(CompDef componentDefinition) { components.Add( componentDefinition.Name, componentDefinition); }