private DocumentRange GetDocumentRange(INumericValue firstValue, INumericValue lastValue)
        {
            var startOffset = firstValue.GetDocumentStartOffset();
            var endOffset   = lastValue.GetDocumentEndOffset();

            return(new DocumentRange(startOffset, endOffset));
        }
示例#2
0
 public IEditableValueViewModel VisitNumericValue(INumericValue numericValue)
 {
     return(InitDefaults(numericValue, new EditableNumericValueViewModel()
     {
         NumValue = numericValue.NumValue.ToString()
     }));
 }
示例#3
0
        public async Task <IFormattedValue> VisitDirectUshortFormatter(IUshortsFormatter formatter)
        {
            INumericValue numericValue = _typesContainer.Resolve <INumericValue>();

            numericValue.NumValue = _ushortsPayload[0];
            return(numericValue);
        }
示例#4
0
        private DocumentRange GetDocumentRange(INumericValue firstValue, INumericValue lastValue)
        {
            var startOffset = firstValue.GetDocumentStartOffset();
            var endOffset   = lastValue.GetDocumentEndOffset();

            return(OldMsBuildWorkarounds.CreateDocumentRange(startOffset, endOffset));
        }
示例#5
0
 public IFormattedValueViewModel VisitNumericValue(INumericValue numericValue)
 {
     return(InitDefaults(numericValue,
                         new NumericValueViewModel()
     {
         NumValue = numericValue.NumValue.ToString()
     }));
 }
示例#6
0
        public async Task <IFormattedValue> VisitUshortToIntegerFormatter(IUshortsFormatter formatter)
        {
            if (_ushortsPayload.Length != 2)
            {
                throw new ArgumentException("Number of words must be equal 2");
            }
            INumericValue numValue = _typesContainer.Resolve <INumericValue>();

            numValue.NumValue = _ushortsPayload.GetIntFromTwoUshorts();
            return(numValue);
        }
示例#7
0
        public INumericValue Divide(INumericValue other)
        {
            var numericType             = GetType();
            var otherNumericType        = other.GetType();
            var unitType                = Unit.GetType();
            var otherUnitType           = other.GetUnit().GetType();
            var mulitiplicativeUnitType = typeof(DivisiveUnit <,>).MakeGenericType(unitType, otherUnitType);
            var derivedMeasureType      = typeof(DerivedMeasure <, , , ,>).MakeGenericType(numericType, otherNumericType, mulitiplicativeUnitType, unitType, otherUnitType);
            var result = (INumericValue)Activator.CreateInstance(derivedMeasureType);

            result.Value = Value / other.Value;
            return(result);
        }
示例#8
0
        //public async Task<IFormattedValue> VisitFormulaFormatter(IUshortsFormatter formatter)
        //{
        //    INumericValue formattedValue = _typesContainer.Resolve<INumericValue>();
        //    IterationDefinition iterationDefinition = new IterationDefinition();
        //    IFormulaFormatter formulaFormatter = formatter as IFormulaFormatter;

        //    iterationDefinition.FormulaString = formulaFormatter.FormulaString;

        //    iterationDefinition.ArgumentNames = new List<string>();
        //    iterationDefinition.ArgumentValues = new List<double>();
        //    iterationDefinition.ArgumentNames.Add("x");
        //    iterationDefinition.ArgumentValues.Add(_ushortsPayload[0]);
        //    iterationDefinition.NumberOfSimbolsAfterComma = formulaFormatter.NumberOfSimbolsAfterComma;
        //    if (formulaFormatter.UshortFormattableResources != null)
        //    {
        //        //  int index = 1;
        //        //  foreach (IUshortFormattable formattableUshortResource in formulaFormatter.UshortFormattableResources)
        //        //  {
        //        // if (formattableUshortResource is IDeviceValueContaining)
        //        // {
        //        //     IFormattedValue value = formattableUshortResource.UshortsFormatter
        //        //        .Format((formattableUshortResource as IDeviceValueContaining).DeviceUshortsValue);
        //        //    if (value is INumericValue)
        //        //   {
        //        //       double num = (value as INumericValue).NumValue;
        //        //        iterationDefinition.ArgumentNames.Add("x" + index++);
        //        //       iterationDefinition.ArgumentValues.Add(num);
        //        //    }
        //        //  }
        //        // }
        //    }

        //    formattedValue.NumValue = MemoizeCalculateResult(iterationDefinition, formulaFormatter.FormulaString,
        //        formulaFormatter.NumberOfSimbolsAfterComma);
        //    return formattedValue;
        //}

        public async Task <IFormattedValue> VisitFormulaFormatter(IUshortsFormatter formatter)
        {
            INumericValue       formattedValue      = _typesContainer.Resolve <INumericValue>();
            IterationDefinition iterationDefinition = new IterationDefinition();
            IFormulaFormatter   formulaFormatter    = formatter as IFormulaFormatter;

            iterationDefinition.FormulaString = formulaFormatter.FormulaString;

            iterationDefinition.ArgumentNames  = new List <string>();
            iterationDefinition.ArgumentValues = new List <double>();
            iterationDefinition.ArgumentNames.Add("x");
            iterationDefinition.ArgumentValues.Add(_ushortsPayload[0]);
            iterationDefinition.NumberOfSimbolsAfterComma = formulaFormatter.NumberOfSimbolsAfterComma;
            if (formulaFormatter.UshortFormattableResources != null)
            {
                int index = 1;
                foreach (string formattableUshortResource in formulaFormatter.UshortFormattableResources)
                {
                    var resource = _formattingContext.DeviceContext.DeviceSharedResources.SharedResourcesInContainers.FirstOrDefault(
                        container => container.ResourceName == formattableUshortResource);

                    var propValue = await StaticContainer.Container.Resolve <IPropertyValueService>()
                                    .GetValueOfProperty(resource.Resource, _formattingContext.DeviceContext, true, _isLocal);

                    if (propValue.Item is INumericValue numericValue)
                    {
                        double num = numericValue.NumValue;
                        iterationDefinition.ArgumentNames.Add("x" + index++);
                        iterationDefinition.ArgumentValues.Add(num);
                    }
                }
            }

            formattedValue.NumValue = MemoizeCalculateResult(iterationDefinition, formulaFormatter.FormulaString,
                                                             formulaFormatter.NumberOfSimbolsAfterComma);
            return(formattedValue);
        }
 private static int GetColorValue(INumericValue value)
 {
     double.TryParse(value.Constant.GetText(), NumberStyles.Float, CultureInfo.InvariantCulture, out var d);
     return(Math.Min(Math.Abs((int)(255 * d)), byte.MaxValue));
 }
示例#10
0
 private int GetColorValue(INumericValue value)
 {
     double.TryParse(value.Constant.GetText(), out var d);
     return((int)(255 * d));
 }
示例#11
0
 private int GetColorValue(INumericValue value)
 {
     double.TryParse(value.Constant.GetText(), NumberStyles.Float, CultureInfo.InvariantCulture, out var d);
     return((int)(255 * d));
 }
        private void button2_Click(object sender, EventArgs e)
        {
            mc = new Mathcad.Application {
                Visible = true
            };
            wk = mc.Worksheets;
            ws = wk.Open(mySettings.Default._worksheetPath);

            int rows, cols;

            try
            {
                InteractionRevit ir = new InteractionRevit(doc);

                double[] matrix = new double[ir.WallsAlong.Count];

                for (int i = 0; i < ir.WallsAlong.Count; i++)
                {
                    FamilyInstance fi     = ir.WallsAlong[i];
                    LocationCurve  loc    = fi.Location as LocationCurve;
                    double         length = Util.FootToMeter(loc.Curve.Length);
                    matrix[i] = length;
                }

                //rows = ir.WallsAlong.Count;
                //cols = 1;

                //NumericValue member = matrix.GetElement(0, 0) as NumericValue;

                //for (int i = 0; i < rows; i++)
                //{
                //    for (int j = 0; j < cols; j++)
                //    {
                //        LocationCurve loc = ir.WallsAlong[i].Location as LocationCurve;
                //        double length = Util.FootToMeter(loc.Curve.Length);

                //        member.Real = length;

                //        matrix.SetElement(i, j, member);
                //    }
                //}

                ws.SetValue("i.x", matrix);

                ws.Recalculate();
                ws.Save();

                //Regions regions = ws.Regions;

                var value = ws.GetValue("i.x") as MatrixValue;

                StringBuilder sb2 = new StringBuilder();

                sb2.Append(value.AsString);
                sb2.AppendLine();

                rows = value.Rows;
                cols = value.Cols;

                for (int i = 0; i < rows; i++)
                {
                    for (int j = 0; j < cols; j++)
                    {
                        INumericValue numval = value.GetElement(i, j);
                        sb2.Append(numval.Real.ToString());
                        sb2.AppendLine();
                    }
                }
                op.WriteDebugFile(_debugFilePath, sb2);
            }
            catch (Exception ex)
            {
                //Cleanup();
                Console.WriteLine(ex);
                StringBuilder exSb = new StringBuilder();
                exSb.Append(ex.Message);
                exSb.AppendLine();
                op.WriteDebugFile(_debugFilePath, exSb);
                //Util.InfoMsg(ex.Message);
            }
            Cleanup();
        }
        public InteractionMathcad(Document doc, Worksheet ws)
        {
            int rows, cols;

            InteractionRevit ir = new InteractionRevit(doc);

            try
            {
                System.Type objType = System.Type.GetTypeFromProgID("Mathcad.MatrixValue");

                dynamic comObject = System.Activator.CreateInstance(objType);

                rows = ir.WallsAlong.Count;
                cols = 1;

                for (int i = 0; i < rows; i++)
                {
                    for (int j = 0; j < cols; j++)
                    {
                        LocationCurve loc    = ir.WallsAlong[i].Location as LocationCurve;
                        double        length = ut.FootToMeter(loc.Curve.Length);

                        NumericValue member = new NumericValue();
                        member.Real = length;

                        comObject.SetElement(i, j, member);
                    }
                }

                ws.SetValue("i.x", comObject);

                ws.Recalculate();

                //Regions regions = ws.Regions;

                var value = ws.GetValue("i.x") as MatrixValue;

                StringBuilder sb2 = new StringBuilder();

                sb2.Append(value.AsString);
                sb2.AppendLine();

                rows = value.Rows;
                cols = value.Cols;

                for (int i = 0; i < rows; i++)
                {
                    for (int j = 0; j < cols; j++)
                    {
                        INumericValue numval = value.GetElement(i, j);
                        sb2.Append(numval.Real.ToString());
                        sb2.AppendLine();
                    }
                }
                op.WriteDebugFile(_debugFilePath, sb2);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                StringBuilder exSb = new StringBuilder();
                exSb.Append(ex.Message);
                exSb.AppendLine();
                op.WriteDebugFile(_debugFilePath, exSb);
            }
        }