コード例 #1
0
        public double ApplySizeTransferSettingsTo(int _index_in_size, double _size, GeomSizeTransferDef _transfer_settings)
        {
            if (_index_in_size < 0 || _index_in_size > 5)
            {
                return(0.0);
            }
            if (this.instance_size == null || this.instance_size_transfer_settings == null)
            {
                return(0.0);
            }

            int nrS = this.instance_size.Count;

            if (nrS < _index_in_size + 1)
            {
                return(0.0);
            }
            if (this.instance_size_transfer_settings.Count < _index_in_size + 1)
            {
                return(this.instance_size[_index_in_size]);
            }

            // save to internal containers
            this.instance_size[_index_in_size] = _size;
            this.instance_size_transfer_settings[_index_in_size] = _transfer_settings;

            // perform transfer
            if (this.instance_size_transfer_settings[_index_in_size].Source == GeomSizeTransferSource.USER)
            {
                return(this.instance_size[_index_in_size]);
            }

            double new_value = this.instance_size[_index_in_size];

            if (this.instance_size_transfer_settings[_index_in_size].Source == GeomSizeTransferSource.PARAMETER &&
                !string.IsNullOrEmpty(this.instance_size_transfer_settings[_index_in_size].ParameterName))
            {
                if (this.InstanceParamValues.ContainsKey(this.instance_size_transfer_settings[_index_in_size].ParameterName))
                {
                    new_value = this.InstanceParamValues[this.instance_size_transfer_settings[_index_in_size].ParameterName] +
                                this.instance_size_transfer_settings[_index_in_size].Correction;
                }
            }
            else if (this.instance_size_transfer_settings[_index_in_size].Source == GeomSizeTransferSource.PATH &&
                     this.instance_path != null && this.instance_path.Count > 2)
            {
                new_value = this.instance_path_length + this.instance_size_transfer_settings[_index_in_size].Correction;
            }

            this.instance_size[_index_in_size] = new_value;
            return(new_value);
        }
コード例 #2
0
        public virtual void AddToExport(ref StringBuilder _sb)
        {
            if (_sb == null)
            {
                return;
            }

            _sb.AppendLine(((int)ParamStructCommonSaveCode.ENTITY_START).ToString()); // 0
            _sb.AppendLine(ParamStructTypes.GEOM_RELATION);                           // GEOM_RELATIONSHIP

            _sb.AppendLine(((int)ParamStructCommonSaveCode.CLASS_NAME).ToString());
            _sb.AppendLine(this.GetType().ToString());

            // id, name, state
            _sb.AppendLine(((int)ParamStructCommonSaveCode.ENTITY_ID).ToString());
            _sb.AppendLine(this.ID.ToString());

            _sb.AppendLine(((int)GeometricRelationshipSaveCode.NAME).ToString());
            _sb.AppendLine(this.Name);

            _sb.AppendLine(((int)GeometricRelationshipSaveCode.STATE_TYPE).ToString());
            _sb.AppendLine(GeometryUtils.Relationship2GeometryToString(this.State.Type));

            _sb.AppendLine(((int)GeometricRelationshipSaveCode.STATE_ISREALIZED).ToString());
            string tmp = (this.State.IsRealized) ? "1" : "0";

            _sb.AppendLine(tmp);

            // referenced geometry
            _sb.AppendLine(((int)GeometricRelationshipSaveCode.GEOM_IDS_X).ToString());
            _sb.AppendLine(this.GeomIDs.X.ToString());

            _sb.AppendLine(((int)GeometricRelationshipSaveCode.GEOM_IDS_Y).ToString());
            _sb.AppendLine(this.GeomIDs.Y.ToString());

            _sb.AppendLine(((int)GeometricRelationshipSaveCode.GEOM_IDS_Z).ToString());
            _sb.AppendLine(this.GeomIDs.Z.ToString());

            _sb.AppendLine(((int)GeometricRelationshipSaveCode.GEOM_IDS_W).ToString());
            _sb.AppendLine(this.GeomIDs.W.ToString());

            _sb.AppendLine(((int)GeometricRelationshipSaveCode.GEOM_CS).ToString());
            _sb.AppendLine(this.GeomCS.ToString(GeometricRelationship.NR_FORMATTER));

            // transforms
            _sb.AppendLine(((int)GeometricRelationshipSaveCode.TRANSF_WC2LC).ToString());
            _sb.AppendLine(this.TRm_WC2LC.ToString(GeometricRelationship.NR_FORMATTER));

            _sb.AppendLine(((int)GeometricRelationshipSaveCode.TRANSF_LC2WC).ToString());
            _sb.AppendLine(this.TRm_LC2WC.ToString(GeometricRelationship.NR_FORMATTER));

            // ---------------------- INSTANCE INFORMATION ----------------------------- //
            //  size
            _sb.AppendLine(((int)GeometricRelationshipSaveCode.INST_SIZE).ToString());
            _sb.AppendLine(this.instance_size.Count.ToString());

            foreach (double size_value in this.instance_size)
            {
                _sb.AppendLine(((int)ParamStructCommonSaveCode.X_VALUE).ToString());
                _sb.AppendLine(Parameter.Parameter.ValueToString(size_value, "F8"));
            }

            // size transfer settings
            _sb.AppendLine(((int)GeometricRelationshipSaveCode.INST_SIZE_TRANSSETTINGS).ToString());
            _sb.AppendLine(this.instance_size_transfer_settings.Count.ToString());

            foreach (GeomSizeTransferDef size_trs in this.instance_size_transfer_settings)
            {
                _sb.AppendLine(((int)GeometricRelationshipSaveCode.INST_SIZE_TS_SOURCE).ToString());
                _sb.AppendLine(GeomSizeTransferDef.GeomSizeTransferSourceToString(size_trs.Source));

                _sb.AppendLine(((int)GeometricRelationshipSaveCode.INST_SIZE_TS_INITVAL).ToString());
                _sb.AppendLine(Parameter.Parameter.ValueToString(size_trs.InitialValue, "F8"));

                _sb.AppendLine(((int)GeometricRelationshipSaveCode.INST_SIZE_TS_PARNAME).ToString());
                _sb.AppendLine(size_trs.ParameterName);

                _sb.AppendLine(((int)GeometricRelationshipSaveCode.INST_SIZE_TS_CORRECT).ToString());
                _sb.AppendLine(Parameter.Parameter.ValueToString(size_trs.Correction, "F8"));
            }

            // network element info
            _sb.AppendLine(((int)GeometricRelationshipSaveCode.INST_NWE_ID).ToString());
            _sb.AppendLine(this.instance_nwe_id.ToString());

            _sb.AppendLine(((int)GeometricRelationshipSaveCode.INST_NWE_NAME).ToString());
            _sb.AppendLine(this.instance_nwe_name.ToString());

            // path
            _sb.AppendLine(((int)GeometricRelationshipSaveCode.INST_PATH).ToString());
            _sb.AppendLine(this.instance_path.Count.ToString());

            foreach (Point3D vertex in this.instance_path)
            {
                _sb.AppendLine(((int)ParamStructCommonSaveCode.X_VALUE).ToString());
                _sb.AppendLine(Parameter.Parameter.ValueToString(vertex.X, "F8"));

                _sb.AppendLine(((int)ParamStructCommonSaveCode.Y_VALUE).ToString());
                _sb.AppendLine(Parameter.Parameter.ValueToString(vertex.Y, "F8"));

                _sb.AppendLine(((int)ParamStructCommonSaveCode.Z_VALUE).ToString());
                _sb.AppendLine(Parameter.Parameter.ValueToString(vertex.Z, "F8"));
            }
        }