private void getActors() { var parent = this.Parent; if (parent == null) { return; } Viewport3DXext vp = parent as Viewport3DXext; if (vp == null) { return; } foreach (var item in vp.Items) { this.viewPort = vp; LineGenerator3D linGen = item as LineGenerator3D; ArchitectureDisplay arcDisp = item as ArchitectureDisplay; ZoneGroupDisplay zoneDisp = item as ZoneGroupDisplay; ComponentDisplay comprepDisp = item as ComponentDisplay; OcTreeManager otMan = item as OcTreeManager; ViewFrustumFunctions vfFunc = item as ViewFrustumFunctions; if (linGen != null) { this.LineGen = linGen; } if (arcDisp != null) { this.ArcDisp = arcDisp; } if (zoneDisp != null) { this.ZoneDisp = zoneDisp; if (zoneDisp != null) { this.ZoneDisp.PropertyChanged += ZoneDisp_PropertyChanged; } } if (comprepDisp != null) { this.CompDisp = comprepDisp; } if (otMan != null) { this.OTManager = otMan; } if (vfFunc != null) { this.ViewFF = vfFunc; } } }
void ZoneDisp_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { ZoneGroupDisplay zgd = sender as ZoneGroupDisplay; if (zgd != null) { if (e != null && e.PropertyName == "PickedZonedVolume") { if (this.comp_waiting_to_be_assoc_w_volume != null && this.comp_waiting_for_picked_volume) { // complete command OnAssociateCompRepWZonedVolumeCommand() zgd.EManager.ReAssociateZonedVolumeWComp(this.comp_waiting_to_be_assoc_w_volume); this.viewPort.SwitchActionModeCmd.Execute("SPACES_OPENINGS"); if (this.CompDisp != null) { this.CompDisp.CompRepMANAGER.UpdateFlatRecord(); this.CompDisp.UpdateCompRepList(); } // this.viewPort.SendDataToCompBuilder(this.comp_waiting_to_be_assoc_w_volume); // not necessary, call is performed from the CompRep class this.comp_waiting_for_picked_volume = false; } else if (this.comp_waiting_to_be_aligned_w_volume_wall != null && this.comp_waiting_for_alignment_w_picked_volume_wall) { // complete command OnAlignCompRepWZonedVolumeCommand() ZonedVolume selected_vol = zgd.EManager.SelectedVolume; CompRepContainedIn_Instance selected_comp = this.comp_waiting_to_be_aligned_w_volume_wall as CompRepContainedIn_Instance; if (selected_vol != null && selected_comp != null && selected_comp.GR_Relationships[0].GrIds.X == selected_vol.ID) { bool successful_wall_hit = false; Vector3 new_X_Axis = selected_vol.GetHorizontalAxisOfHitWall(zgd.HitPointOnVolumeMesh.ToVector3(), out successful_wall_hit); if (successful_wall_hit) { selected_comp.AlignPlacement(new_X_Axis.ToVector3D()); } this.viewPort.SwitchActionModeCmd.Execute("SPACES_OPENINGS"); if (this.CompDisp != null) { this.CompDisp.CompRepMANAGER.UpdateFlatRecord(); this.CompDisp.UpdateCompRepList(); } } this.comp_waiting_for_alignment_w_picked_volume_wall = false; } } } }