Ejemplo n.º 1
0
        private string GetAttributeString()
        {
            var attributes = new Dictionary <string, string>();

            attributes.Add("protocol", this.Protocol.ToString());
            attributes.Add("gateway", this.Gateway);
            attributes.Add("path", Path);
            attributes.Add("plc", PlcType.ToString().ToLower());
            attributes.Add("elem_size", ElementSize?.ToString());
            attributes.Add("elem_count", ElementCount?.ToString());
            attributes.Add("name", Name);
            attributes.Add("read_cache_ms", ReadCacheMillisecondDuration?.ToString());
            if (UseConnectedMessaging.HasValue)
            {
                attributes.Add("use_connected_msg", UseConnectedMessaging.Value ? "1" : "0");
            }

            string separator = "&";

            return(string.Join(separator, attributes.Where(attr => attr.Value != null).Select(attr => $"{attr.Key}={attr.Value}")));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Converts value to string.
        /// </summary>
        public override string ConvertToString(object value)
        {
            ElementSize elementSize = value as ElementSize;

            return(elementSize.ToString());
        }
Ejemplo n.º 3
0
        public bool BakeGeometry(RhinoDoc doc, ObjectAttributes baking_attributes, out Guid obj_guid)
        {
            if (Value != null)
            {
                var att = baking_attributes.Duplicate();

                // set user strings
                att.SetUserString("SOF_OBJ_TYPE", "SLN");
                att.SetUserString("SOF_ID", Math.Max(0, Id).ToString());

                if (GroupId > 0)
                {
                    att.SetUserString("SOF_GRP", GroupId.ToString());
                }
                if (SectionIdStart > 0)
                {
                    att.SetUserString("SOF_STYP", ElementType);
                    att.SetUserString("SOF_STYP2", "E");
                    att.SetUserString("SOF_SNO", SectionIdStart.ToString());

                    if (SectionIdEnd > 0)
                    {
                        att.SetUserString("SOF_SNOE", SectionIdEnd.ToString());
                    }
                    else
                    {
                        att.SetUserString("SOF_SNOE", "SOF_PROP_COMBO_NONE");
                    }
                }

                if (ElementSize != 0.0)
                {
                    att.SetUserString("SOF_SDIV", ElementSize.ToString());
                }

                if (DirectionLocalZ.Length > 1.0E-6)
                {
                    var dir_z = DirectionLocalZ; dir_z.Unitize();

                    att.SetUserString("SOF_DRX", dir_z.X.ToString("F6"));
                    att.SetUserString("SOF_DRY", dir_z.Y.ToString("F6"));
                    att.SetUserString("SOF_DRZ", dir_z.Z.ToString("F6"));
                }

                if (string.IsNullOrWhiteSpace(fixLiteral) == false)
                {
                    string fix_literal = FixLiteral.Replace("PP", "PXPYPZ").Replace("MM", "MXMYMZ");

                    if (fix_literal == "F")
                    {
                        fix_literal = "PXPYPZMXMYMZ";
                    }

                    att.SetUserString("SOF_FIX", fix_literal);
                }

                if (string.IsNullOrWhiteSpace(UserText) == false)
                {
                    att.SetUserString("SOF_USERTXT", UserText);
                }

                obj_guid = doc.Objects.AddCurve(Value, att);
            }
            else
            {
                obj_guid = new Guid();
            }
            return(true);
        }
Ejemplo n.º 4
0
        public bool BakeGeometry(RhinoDoc doc, ObjectAttributes baking_attributes, out Guid obj_guid)
        {
            if (Value != null)
            {
                var att = baking_attributes.Duplicate();

                att.SetUserString("SOF_OBJ_TYPE", "SAR");
                att.SetUserString("SOF_ID", Math.Max(0, Id).ToString());

                if (GroupId > 0)
                {
                    att.SetUserString("SOF_GRP", GroupId.ToString());
                }
                if (MaterialId > 0)
                {
                    att.SetUserString("SOF_MNO", MaterialId.ToString());
                }
                if (ReinforcementId > 0)
                {
                    att.SetUserString("SOF_MRF", ReinforcementId.ToString());
                }

                att.SetUserString("SOF_T", Thickness.ToString());
                att.SetUserString("SOF_QREF", Alignment);

                if (MeshOptions == "AUTO")
                {
                    att.SetUserString("SOF_MCTL", "0");
                }
                else if (MeshOptions == "REGM")
                {
                    att.SetUserString("SOF_MCTL", "1");
                }
                else if (MeshOptions == "SNGQ")
                {
                    att.SetUserString("SOF_MCTL", "2");
                }
                else if (MeshOptions == "OFF")
                {
                    att.SetUserString("SOF_MCTL", "-1");
                }

                if (ElementSize != 0.0)
                {
                    att.SetUserString("SOF_HMIN", ElementSize.ToString());
                }

                if (DirectionLocalX.Length > 1.0e-6)
                {
                    var dir_x = DirectionLocalX; dir_x.Unitize();

                    att.SetUserString("SOF_DRX", dir_x.X.ToString("F6"));
                    att.SetUserString("SOF_DRY", dir_x.Y.ToString("F6"));
                    att.SetUserString("SOF_DRZ", dir_x.Z.ToString("F6"));
                }

                if (string.IsNullOrWhiteSpace(UserText) == false)
                {
                    att.SetUserString("SOF_USERTXT", UserText);
                }

                obj_guid = doc.Objects.AddBrep(Value, att);
            }
            else
            {
                obj_guid = new Guid();
            }
            return(true);
        }