Пример #1
0
        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);
            }
        }
Пример #3
0
 /// <summary>
 /// Include a ComponentDefinition in a Model.
 /// </summary>
 /// <param name="componentDefinition"></param>
 public void Add(CompDef componentDefinition)
 {
     components.Add(
         componentDefinition.Name,
         componentDefinition);
 }