Example #1
0
        // OnInstanceBegin marks the beginning of a family instance to be exported.
        public RenderNodeAction OnInstanceBegin(
            InstanceNode InInstanceNode             // family instance output node
            )
        {
            Element CurrentFamilySymbol = GetElement(InInstanceNode.GetSymbolId());

            if (CurrentFamilySymbol != null)
            {
                // Keep track of the world transform for the instance being processed.
                WorldTransformStack.Push(WorldTransformStack.Peek().Multiply(InInstanceNode.GetTransform()));

                ElementType CurrentInstanceType = CurrentFamilySymbol as ElementType;

                // Keep track of the instance being processed.
                if (CurrentInstanceType != null)
                {
                    PushInstance(CurrentInstanceType, WorldTransformStack.Peek(), "Instance Begin");
                }
                else
                {
                    CurrentElementSkipped = !PushElement(CurrentFamilySymbol, WorldTransformStack.Peek(), "Symbol Begin");
                }
            }

            // We always wanna proceed, because in certain cases where InInstanceNode is valid but CurrentInstance is not,
            // what follows is valid geometry related to the instance previously exported.
            return(CurrentElementSkipped ? RenderNodeAction.Skip : RenderNodeAction.Proceed);
        }
        RenderNodeAction IExportContext.OnInstanceBegin(InstanceNode node)
        {
            Transform t = node.GetTransform();

            MessageBox.Show(node.NodeName + ":" + t.Scale, "OnInstanceBegin");

            return(RenderNodeAction.Proceed);
        }
        public RenderNodeAction OnInstanceBegin(InstanceNode node)
        {
            // This method marks the start of processing a family instance
            transformationStack.Push(transformationStack.Peek().Multiply(node.GetTransform()));

            // We can either skip this instance or proceed with rendering it.
            return(RenderNodeAction.Proceed);
        }
Example #4
0
        public RenderNodeAction OnInstanceBegin(InstanceNode node)
        {
            Debug.WriteLine("  OnInstanceBegin: " + node.NodeName + " symbol: " + node.GetSymbolId().IntegerValue);
            // This method marks the start of processing a family instance
            _transformationStack.Push(CurrentTransform.Multiply(node.GetTransform()));

            // We can either skip this instance or proceed with rendering it.
            return(RenderNodeAction.Proceed);
        }
Example #5
0
        /// <summary>
        /// This is called when family instances are encountered, immediately after OnElementBegin.
        /// We're using it here to maintain the transform stack for that element's heirarchy.
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        public RenderNodeAction OnInstanceBegin(InstanceNode node)
        {
            Debug.WriteLine("  OnInstanceBegin");
            _transformStack.Push(
                CurrentTransform.Multiply(node.GetTransform())
                );

            // We can either skip this instance or proceed with rendering it.
            return(RenderNodeAction.Proceed);
        }
Example #6
0
        /// <summary>
        /// This method marks the start of processing a family instance
        /// https://www.revitapidocs.com/2018/2db35bdb-8d14-a015-9bfb-9283f503edab.htm
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        public RenderNodeAction OnInstanceBegin(InstanceNode node)
        {
            // We can get particular information about the family instance and its type if we need to
            ElementId    symbolId  = node.GetSymbolId();
            FamilySymbol famSymbol = doc.GetElement(symbolId) as FamilySymbol;

            // Typically, an export context has to manage a stack of transformation
            // for all nested objects, such as instances, lights, links, etc.
            // A combined transformation needs to be applied to the incoming geometry
            // (providing all geometry is to be flattened in the resultant format.)
            tfStack.Push(tfStack.Peek().Multiply(node.GetTransform()));
            return(RenderNodeAction.Proceed);
        }
Example #7
0
        public RenderNodeAction OnInstanceBegin(InstanceNode node)
        {
            Transform     t  = node.GetTransform();
            MessageBuffer mb = new MessageBuffer();

            mb.add(node.GetSymbolId().IntegerValue);
            mb.add(node.NodeName);
            mb.add(t.BasisX.Multiply(t.Scale));
            mb.add(t.BasisY.Multiply(t.Scale));
            mb.add(t.BasisZ.Multiply(t.Scale));
            mb.add(t.Origin);
            OpenCOVERPlugin.COVER.Instance.sendMessage(mb.buf, OpenCOVERPlugin.COVER.MessageTypes.NewInstance);
            return(RenderNodeAction.Proceed);
        }
Example #8
0
        /// <summary>
        /// This is called when family instances are encountered, after OnElementBegin.
        /// We're using it here to maintain the transform stack for that element's heirarchy.
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        public RenderNodeAction OnInstanceBegin(InstanceNode node)
        {
            Debug.WriteLine(String.Format("{0}OnInstanceBegin", manager.formatDebugHeirarchy));

            ElementId symId   = node.GetSymbolId();
            Element   symElem = _doc.GetElement(symId);

            Debug.WriteLine(String.Format("{2}OnInstanceBegin: {0}-{1}", symId, symElem.Name, manager.formatDebugHeirarchy));

            var nodeXform = node.GetTransform();

            manager.OpenNode(symElem, nodeXform.IsIdentity ? null : nodeXform, true);

            return(RenderNodeAction.Proceed);
        }
        /// <summary>
        ///     This method marks the beginning of a family instance to be exported.
        /// </summary>
        /// <param name="node">The instance node.</param>
        /// <returns></returns>
        public RenderNodeAction OnInstanceBegin(InstanceNode node)
        {
            try
            {
                Debug.WriteLine("  OnInstanceBegin: " + node.NodeName
                                + " symbol: " + node.GetSymbolId().IntegerValue);

                // This method marks the start of processing a family instance
                transformations.Push(transformations.Peek().Multiply(
                                         node.GetTransform()));
            }
            catch (Exception ex)
            {
                ProcessException(ex);
                return(RenderNodeAction.Skip);
            }

            return(RenderNodeAction.Proceed);
        }
Example #10
0
        public RenderNodeAction OnInstanceBegin(
            InstanceNode node)
        {
            FamilySymbol symbol = _doc.GetElement(
                node.GetSymbolId()) as FamilySymbol;

            Debug.Assert(null != symbol,
                         "expected valid family symbol");

            Debug.Print("InstanceBegin "
                        + symbol.Category.Name + " : "
                        + symbol.Family.Name + " : "
                        + symbol.Name);

            _transformationStack.Push(CurrentTransform
                                      .Multiply(node.GetTransform()));

            return(RenderNodeAction.Proceed);
        }
Example #11
0
 public RenderNodeAction OnInstanceBegin(InstanceNode inNode)
 {
     m_stackTransform.Push(m_stackTransform.Peek().Multiply(inNode.GetTransform()));
     m_Exporter.AddTransform(m_stackTransform.Peek());
     return(RenderNodeAction.Proceed);
 }
Example #12
0
 public RenderNodeAction OnInstanceBegin(InstanceNode node)
 {
     this.m_TransformationStack.Push(this.m_TransformationStack.Peek().Multiply(node.GetTransform()));
     return(0);
 }
Example #13
0
 public RenderNodeAction OnInstanceBegin(InstanceNode node)
 {
     Debug.Print($"InstanceBegin {node.NodeName}");
     _transformationStack.Push(CurrentTransform.Multiply(node.GetTransform()));
     return(RenderNodeAction.Proceed);
 }
Example #14
0
 /// <summary>
 /// 标记了要导出的族实例的开始。
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 RenderNodeAction IExportContext.OnInstanceBegin(InstanceNode node)
 {
     transformationStack.Push(transformationStack.Peek().Multiply(node.GetTransform()));
     return(RenderNodeAction.Proceed);
 }
 public RenderNodeAction OnInstanceBegin(InstanceNode inNode)
 {
     m_stackTransform.Push(m_stackTransform.Peek().Multiply(inNode.GetTransform()));
     m_Exporter.AddTransform(m_stackTransform.Peek());
     return RenderNodeAction.Proceed;
 }
Example #16
0
 /// <summary>
 /// 此方法标记了要导出的实例的开始。
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public RenderNodeAction OnInstanceBegin(InstanceNode node)
 {
     _transformationStack.Push(CurrentTransform.Multiply(node.GetTransform()));
     return(RenderNodeAction.Proceed);
 }
Example #17
0
 public RenderNodeAction OnInstanceBegin(InstanceNode node)
 {
     Transforms.Push(Transforms.Peek().Multiply(node.GetTransform()));
     return(RenderNodeAction.Proceed);
 }
Example #18
0
        public RenderNodeAction OnInstanceBegin(InstanceNode node)
        {
            Transform t = node.GetTransform();
            MessageBuffer mb = new MessageBuffer();

            mb.add(node.GetSymbolId().IntegerValue);
            mb.add(node.NodeName);
            mb.add(t.BasisX.Multiply(t.Scale));
            mb.add(t.BasisY.Multiply(t.Scale));
            mb.add(t.BasisZ.Multiply(t.Scale));
            mb.add(t.Origin);
            OpenCOVERPlugin.COVER.Instance.sendMessage(mb.buf, OpenCOVERPlugin.COVER.MessageTypes.NewInstance);
            return RenderNodeAction.Proceed;
        }