void InitModelingView(EdmDraw.EdmConfig edmConfig, ElecManage.Electrode elec, bool isAutoMode = true) { if (IsInitModelingView && !isAutoMode) { return; } SnapEx.Create.ApplicationSwitchRequest(SnapEx.ApplicationType.MODELING); var wcsOrientation = Electrode.GetStandardOrientation(Snap.Globals.WcsOrientation); var acsOrientation = Snap.Orientation.Identity; var baseDirOrientation = Electrode.GetSidelongOrientation(new Snap.Orientation(-elec.BaseFace.GetFaceDirection())); var transR = Snap.Geom.Transform.CreateRotation(acsOrientation, wcsOrientation); var transR1 = Snap.Geom.Transform.CreateRotation(baseDirOrientation, wcsOrientation); var draftViewLocations = edmConfig.DraftViewLocations ?? new List <EdmDraw.EdmConfig.DraftViewLocation>(); foreach (var item in draftViewLocations) { var viewType = EdmDraw.DrawBusiness.GetEumnViewType(item.ViewType); var X = new Snap.Vector(item.Xx, item.Xy, item.Xz).Copy(transR); var Y = new Snap.Vector(item.Yx, item.Yy, item.Yz).Copy(transR); if (viewType == EdmDraw.ViewType.EACT_BOTTOM || viewType == EdmDraw.ViewType.EACT_BOTTOM_FRONT || viewType == EdmDraw.ViewType.EACT_BOTTOM_ISOMETRIC ) { X = X.Copy(transR1); Y = Y.Copy(transR1); } EdmDraw.DrawBusiness.CreateCamera(viewType, new double[] { X.X, X.Y, X.Z, Y.X, Y.Y, Y.Z }); } IsInitModelingView = true; }
/// <summary> /// 创建表格 /// </summary> List <NXOpen.Tag> CreateTable(EdmDraw.EdmConfig edmConfig, List <ElecManage.PositioningInfo> elecs) { var result = new List <NXOpen.Tag>(); //创建表格 var tableInfo = edmConfig.Table; var columnInfos = tableInfo.ColumnInfos; var tabularNote = EdmDraw.DrawBusiness.CreateTabnot( new Snap.Position(tableInfo.locationX, tableInfo.locationY), elecs.Count + 1, tableInfo.ColumnInfos.Count, tableInfo.RowHeight, tableInfo.ColumnWidth, edmConfig ); columnInfos.ForEach(u => { EdmDraw.DraftingHelper.WriteTabularCell(0, columnInfos.IndexOf(u), u.DisplayName, tabularNote, tableInfo.RowHeight / 2, tableInfo.TableHeadFont); }); result.Add(tabularNote); foreach (var item in elecs) { var elecIndex = elecs.IndexOf(item) + 1; var info = item.Electrode.GetElectrodeInfo(); var edmTableInfo = new EdmDraw.EDMTableInfo(); edmTableInfo.ZTOP = System.Math.Round(info.HEADPULLUPH, 2).ToString(); edmTableInfo.N = item.N; edmTableInfo.X = item.X.ToString(); edmTableInfo.Y = item.Y.ToString(); edmTableInfo.Z = item.Z.ToString(); edmTableInfo.C = item.C.ToString(); edmTableInfo.DIRECTION = info.EDMPROCDIRECTION; foreach (var columnInfo in columnInfos) { var index = columnInfos.IndexOf(columnInfo); if (columnInfo.Ex == "1") { var lines = EdmDraw.DrawBusiness.CreatePentagon( new Snap.Position(tableInfo.locationX + ((index * tableInfo.ColumnWidth) + tableInfo.ColumnWidth / 2), tableInfo.locationY - ((elecIndex * tableInfo.RowHeight) + tableInfo.RowHeight / 2)) , item.QuadrantType , tableInfo.ColumnWidth * 2 / 3 , tableInfo.RowHeight * 2 / 3 ); result.AddRange(lines); EdmDraw.DraftingHelper.WriteTabularCell(elecIndex, index, EdmDraw.Helper.GetPropertyValue(edmTableInfo, columnInfo.DisplayName).ToString(), tabularNote, tableInfo.RowHeight / 2, edmConfig.TextMpi88); } else { EdmDraw.DraftingHelper.WriteTabularCell(elecIndex, index, EdmDraw.Helper.GetPropertyValue(edmTableInfo, columnInfo.DisplayName).ToString(), tabularNote, edmConfig.TextMpr44, edmConfig.TextMpi88); } } } EdmDraw.DraftingHelper.UpdateTabularNote(tabularNote); return(result); }
public void Init() { InitDgv(dataGridView2); InitDgv(dataGridView1); InitDgv(dataGridView3); List <string> _paramFileList = new List <string>(); var members = new List <string>(); var path = EdmConfig.GetEdmTemplatePath(); if (System.IO.Directory.Exists(path)) { System.IO.Directory.GetFiles(path).ToList().ForEach(u => { var fileName = System.IO.Path.GetFileNameWithoutExtension(u); cbbEdmTemplate.Items.Add(fileName); _paramFileList.Add(fileName); }); } //读取配置文件信息 var config = GetInstance(); dataGridView2.DataSource = config.DraftViewLocations ?? new List <EdmConfig.DraftViewLocation>(); dataGridView3.DataSource = config.PropertyInfos ?? new List <EdmConfig.PropertyInfo>(); var tableInfo = config.Table ?? new EdmConfig.TableInfo(); dataGridView1.DataSource = tableInfo.ColumnInfos; txtTableInfoX.Text = tableInfo.locationX.ToString(); txtTableInfoY.Text = tableInfo.locationY.ToString(); txtTableInfoColW.Text = tableInfo.ColumnWidth.ToString(); txtTableInfoRowH.Text = tableInfo.RowHeight.ToString(); txtTableHeadFont.Text = tableInfo.TableHeadFont; cbbEdmTemplate.SelectedIndex = _paramFileList.IndexOf(config.EdmTemplate); cbIsUseSystemParam.Checked = config.IsUseSystemConfig; txtPageCount.Text = config.PageCount.ToString(); TextMpi88.Text = config.TextMpi88; TextMpr44.Text = config.TextMpr44.ToString(); TextMpr46.Text = config.TextMpr46.ToString(); TextMpr45.Text = config.TextMpr45.ToString(); TextMpi89.Text = config.TextMpi89.ToString(); DimensionMpi85.Text = config.DimensionMpi85; DimensionMpi3.Text = config.DimensionMpi3.ToString(); DimensionMpr32.Text = config.DimensionMpr32.ToString(); DimensionMpr33.Text = config.DimensionMpr33.ToString(); DimensionMpr34.Text = config.DimensionMpr34.ToString(); DimensionMpi86.Text = config.DimensionMpi86.ToString(); txtEdmDrfLayer.Text = config.EdmDrfLayer.ToString(); cbDimensionMpi90.Checked = config.DimensionMpi90 == 1; }
public static void WriteConfig(EdmConfig data) { var json = Newtonsoft.Json.JsonConvert.SerializeObject(data); File.WriteAllText(_path, json); }
void CreateEACT_ISOMETRICView(NXOpen.Drawings.DrawingSheet ds, List <NXOpen.TaggedObject> selections, Snap.Position pos, Snap.Position size, EdmDraw.EdmConfig edmConfig) { var view = EdmDraw.DrawBusiness.CreateBaseView(ds, GetModelingView(EdmDraw.ViewType.EACT_ISOMETRIC).Tag, selections, pos, size, edmConfig); }
void CreateEACT_BOTTOMView(NXOpen.Drawings.DrawingSheet ds, List <NXOpen.TaggedObject> selections, Snap.Position pos, Snap.Position size, ElecManage.Electrode electrode, EdmDraw.EdmConfig edmConfig) { var bottomView = EdmDraw.DrawBusiness.CreateBaseView(ds, GetModelingView(EdmDraw.ViewType.EACT_BOTTOM).Tag, selections, pos, size, edmConfig); var bottomViewBorderPoints = EdmDraw.DrawBusiness.GetBorderPoint(bottomView, electrode.ElecBody); var yPlusSideFace = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Point(bottomViewBorderPoints[1])); }, bottomView.Tag); var yMinusSideFace = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Point(bottomViewBorderPoints[0])); }, bottomView.Tag); var xPlusSideFace = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Line(bottomViewBorderPoints[0], bottomViewBorderPoints[1])); }, bottomView.Tag); var xMinusSideFace = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Line(bottomViewBorderPoints[2], bottomViewBorderPoints[3])); }, bottomView.Tag); //电极仰视图 EdmDraw.DrawBusiness.CreateVerticalDim(bottomView.Tag, yPlusSideFace.NXOpenTag, yMinusSideFace.NXOpenTag, new Snap.Position(bottomView.GetDrawingReferencePoint().X + (EdmDraw.DrawBusiness.GetBorderSize(bottomView.Tag).X / 2), bottomView.GetDrawingReferencePoint().Y, 0)); EdmDraw.DrawBusiness.CreatePerpendicularDim(bottomView.Tag, xPlusSideFace.NXOpenTag, xMinusSideFace.NXOpenTag, new Snap.Position(bottomView.GetDrawingReferencePoint().X, bottomView.GetDrawingReferencePoint().Y + (EdmDraw.DrawBusiness.GetBorderSize(bottomView.Tag).Y / 2), 0)); var bottomViewElecHeadBorderPoints = EdmDraw.DrawBusiness.GetBorderPoint(bottomView, electrode.ElecHeadFaces); var yPlusElectrodeEdge = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Point(bottomViewElecHeadBorderPoints[1])); }, bottomView.Tag); var yMinusElectrodeEdge = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Point(bottomViewElecHeadBorderPoints[0])); }, bottomView.Tag); var xPlusElectrodeEdge = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Line(bottomViewElecHeadBorderPoints[0], bottomViewElecHeadBorderPoints[1])); }, bottomView.Tag); var xMinusElectrodeEdge = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Line(bottomViewElecHeadBorderPoints[2], bottomViewElecHeadBorderPoints[3])); }, bottomView.Tag); EdmDraw.DrawBusiness.CreateVerticalDim(bottomView.Tag, yPlusElectrodeEdge.NXOpenTag, yMinusElectrodeEdge.NXOpenTag, new Snap.Position(bottomView.GetDrawingReferencePoint().X - (EdmDraw.DrawBusiness.GetBorderSize(bottomView.Tag).X / 2), bottomView.GetDrawingReferencePoint().Y, 0)); EdmDraw.DrawBusiness.CreatePerpendicularDim(bottomView.Tag, xPlusElectrodeEdge.NXOpenTag, xMinusElectrodeEdge.NXOpenTag, new Snap.Position(bottomView.GetDrawingReferencePoint().X, bottomView.GetDrawingReferencePoint().Y - (EdmDraw.DrawBusiness.GetBorderSize(bottomView.Tag).Y / 2), 0)); }
void CreateEACT_BOTTOM_FRONTView(NXOpen.Drawings.DrawingSheet ds, List <NXOpen.TaggedObject> selections, Snap.Position pos, Snap.Position size, ElecManage.Electrode electrode, EdmDraw.EdmConfig edmConfig) { var bottomFrontView = EdmDraw.DrawBusiness.CreateBaseView(ds, GetModelingView(EdmDraw.ViewType.EACT_BOTTOM_FRONT).Tag, selections, pos, size, edmConfig); var baseFace = electrode.BaseFace; var bottomFrontViewBorderPoints = EdmDraw.DrawBusiness.GetBorderPoint(bottomFrontView, electrode.ElecBody); var bottomFrontViewTopPoint = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Point(bottomFrontViewBorderPoints[3])); }, bottomFrontView.Tag); var bottomFrontViewBottomPoint = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Point(bottomFrontViewBorderPoints[2])); }, bottomFrontView.Tag); //电极前视图 EdmDraw.DrawBusiness.CreateVerticalDim( bottomFrontView.Tag, bottomFrontViewTopPoint.NXOpenTag, bottomFrontViewBottomPoint.NXOpenTag, new Snap.Position(bottomFrontView.GetDrawingReferencePoint().X + (EdmDraw.DrawBusiness.GetBorderSize(bottomFrontView.Tag).X / 2), bottomFrontView.GetDrawingReferencePoint().Y)); EdmDraw.DrawBusiness.CreateVerticalDim(bottomFrontView.Tag, baseFace.NXOpenTag, bottomFrontViewBottomPoint.NXOpenTag, new Snap.Position(bottomFrontView.GetDrawingReferencePoint().X - (EdmDraw.DrawBusiness.GetBorderSize(bottomFrontView.Tag).X / 2), bottomFrontView.GetDrawingReferencePoint().Y)); }
BaseView CreateEACT_FRONTView(NXOpen.Drawings.DrawingSheet ds, List <NXOpen.TaggedObject> selections, Snap.Position pos, Snap.Position size, ElecManage.Electrode electrode, EdmDraw.EdmConfig edmConfig) { var frontView = EdmDraw.DrawBusiness.CreateBaseView(ds, GetModelingView(EdmDraw.ViewType.EACT_FRONT).Tag, selections, pos, size, edmConfig); var frontViewRightMargin = EdmDraw.DrawBusiness.GetViewBorder(EdmDraw.ViewBorderType.Right, frontView); var frontViewLeftMargin = EdmDraw.DrawBusiness.GetViewBorder(EdmDraw.ViewBorderType.Left, frontView); var ufSession = NXOpen.UF.UFSession.GetUFSession(); var originPoint = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Point(Snap.Globals.Wcs.Origin)); }, frontView.Tag); var elecBasePoint = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Point(electrode.GetElecBasePos())); }, frontView.Tag); var drawBorderPoints = EdmDraw.DrawBusiness.GetDrawBorderPoint(frontView, Snap.NX.Body.Wrap(selections.First().Tag)); var listY = Enumerable.Select(drawBorderPoints, u => u.Y).ToList(); var listX = Enumerable.Select(drawBorderPoints, u => u.X).ToList(); listY.Add(EdmDraw.DrawBusiness.MapModelToDrawing(frontView.Tag, originPoint.Position).Y); listY.Distinct().ToList().ForEach(u => { var tempModel = new double[] { 0, 0, 0 }; ufSession.View.MapDrawingToModel(frontView.Tag, new double[] { listX.Min(), u }, tempModel); var tempU = EdmDraw.DrawBusiness.CreateNxObject <Snap.NX.Point>(() => { return(Snap.Create.Point(tempModel)); }, frontView.Tag); EdmDraw.DrawBusiness.CreatePerpendicularOrddimension( frontView.Tag, originPoint.NXOpenTag, frontViewLeftMargin.NXOpenTag, tempU.NXOpenTag ); }); var frontViewOrddimension = EdmDraw.DrawBusiness.CreatePerpendicularOrddimension( frontView.Tag, originPoint.NXOpenTag, frontViewRightMargin.NXOpenTag, elecBasePoint.NXOpenTag ); EdmDraw.DrawBusiness.SetToleranceType(frontViewOrddimension); return(frontView); }
BaseView CreateEACT_TOPView(NXOpen.Drawings.DrawingSheet ds, Snap.NX.Body steel, Snap.Position pos, Snap.Position size, List <ElecManage.PositioningInfo> positionings, EdmDraw.EdmConfig edmConfig) { var ufSession = NXOpen.UF.UFSession.GetUFSession(); var selections = new List <TaggedObject>(); selections.Add(steel); positionings.ForEach(p => { selections.Add(p.Electrode.ElecBody); }); var topView = EdmDraw.DrawBusiness.CreateBaseView(ds, GetModelingView(EdmDraw.ViewType.EACT_TOP).Tag, selections, pos, size, edmConfig); var topViewRightMargin = EdmDraw.DrawBusiness.GetViewBorder(EdmDraw.ViewBorderType.Right, topView) as Snap.NX.Line; var topViewTopMargin = EdmDraw.DrawBusiness.GetViewBorder(EdmDraw.ViewBorderType.Top, topView) as Snap.NX.Line; var topViewLeftMargin = EdmDraw.DrawBusiness.GetViewBorder(EdmDraw.ViewBorderType.Left, topView) as Snap.NX.Line; var topViewBottomMargin = EdmDraw.DrawBusiness.GetViewBorder(EdmDraw.ViewBorderType.Bottom, topView) as Snap.NX.Line; var originPoint = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Point(Snap.Globals.Wcs.Origin)); }, topView.Tag); var drawBorderPoints = EdmDraw.DrawBusiness.GetDrawBorderPoint(topView, steel); var originPointMTD = EdmDraw.DrawBusiness.MapModelToDrawing(topView.Tag, originPoint.Position); var listY = new List <double>(); var listX = new List <double>(); var temPoints = new List <Snap.Position>(); temPoints.Add(originPointMTD); temPoints.AddRange(drawBorderPoints); temPoints.OrderByDescending(u => u.Y).ToList().ForEach(u => { listY.Add(u.Y); }); temPoints.OrderBy(u => u.X).ToList().ForEach(u => { listX.Add(u.X); }); listY = listY.Distinct().ToList(); listX = listX.Distinct().ToList(); listX.ForEach(u => { var tempModel = new double[] { 0, 0, 0 }; ufSession.View.MapDrawingToModel(topView.Tag, new double[] { u, listY.Min() }, tempModel); var tempU = EdmDraw.DrawBusiness.CreateNxObject <Snap.NX.Point>(() => { return(Snap.Create.Point(tempModel)); }, topView.Tag); EdmDraw.DrawBusiness.CreateVerticalOrddimension( topView.Tag, originPoint.NXOpenTag, topViewBottomMargin.NXOpenTag, tempU.NXOpenTag ); }); listY.ForEach(u => { var tempModel = new double[] { 0, 0, 0 }; ufSession.View.MapDrawingToModel(topView.Tag, new double[] { listX.Min(), u }, tempModel); var tempU = EdmDraw.DrawBusiness.CreateNxObject <Snap.NX.Point>(() => { return(Snap.Create.Point(tempModel)); }, topView.Tag); EdmDraw.DrawBusiness.CreatePerpendicularOrddimension( topView.Tag, originPoint.NXOpenTag, topViewLeftMargin.NXOpenTag, tempU.NXOpenTag ); }); var tempDic = new Dictionary <ElecManage.PositioningInfo, Snap.NX.Point>(); var tempMTDDic = new Dictionary <ElecManage.PositioningInfo, Snap.Position>(); positionings.ForEach(p => { var electrode = p.Electrode; var elecBasePoint = EdmDraw.DrawBusiness.CreateNxObject(() => { return(Snap.Create.Point(p.X, p.Y, p.Z)); }, topView.Tag); tempDic.Add(p, elecBasePoint); }); positionings.ForEach(p => { var positioningMTD = EdmDraw.DrawBusiness.MapModelToDrawing(topView.Tag, tempDic[p].Position.Array); tempMTDDic.Add(p, positioningMTD); }); var tempVar = 3; var psY = positionings.OrderByDescending(p => tempMTDDic[p].Y).ToList(); double tempY = psY.Count > 0 ? tempMTDDic[psY.First()].Y : 0; psY.ForEach(p => { var elecBasePoint = tempDic[p]; var elecBasePointMTD = tempMTDDic[p]; var line = topViewTopMargin as Snap.NX.Line; if (elecBasePointMTD.Y < tempY || Math.Abs(elecBasePointMTD.Y - (edmConfig.DimensionMpr32 * 2 + tempY)) <= SnapEx.Helper.Tolerance) { tempY = elecBasePointMTD.Y; } Snap.Position origin = new Snap.Position(line.StartPoint.X, tempY); var minP = new Snap.Position(line.StartPoint.X, elecBasePointMTD.Y); var newElecBasePointMTD = new Snap.Position(line.StartPoint.X - tempVar, elecBasePointMTD.Y); var angle = Snap.Vector.Angle(newElecBasePointMTD - minP, newElecBasePointMTD - origin); var topViewRightElecBasePoint = EdmDraw.DrawBusiness.CreatePerpendicularOrddimension( topView.Tag, originPoint.NXOpenTag, topViewRightMargin.NXOpenTag, elecBasePoint.NXOpenTag , angle , origin , Snap.Compute.Distance(newElecBasePointMTD, topViewRightMargin) ); EdmDraw.DrawBusiness.SetToleranceType(topViewRightElecBasePoint); tempY -= edmConfig.DimensionMpr32 * 2; }); var psX = positionings.OrderByDescending(p => tempMTDDic[p].X).ToList(); double tempX = psX.Count > 0 ? tempMTDDic[psX.First()].X : 0; psX.ForEach(p => { var index = positionings.IndexOf(p); var elecBasePoint = tempDic[p]; var elecBasePointMTD = tempMTDDic[p]; var line = topViewTopMargin as Snap.NX.Line; var distance = Snap.Compute.Distance(elecBasePointMTD, topViewTopMargin); if (elecBasePointMTD.X < tempX || Math.Abs(elecBasePointMTD.X - (edmConfig.DimensionMpr32 * 2 + tempX)) <= SnapEx.Helper.Tolerance) { tempX = elecBasePointMTD.X; } Snap.Position origin = new Snap.Position(tempX, line.StartPoint.Y); var minP = new Snap.Position(elecBasePointMTD.X, line.StartPoint.Y); var newElecBasePointMTD = new Snap.Position(elecBasePointMTD.X, line.StartPoint.Y - tempVar); var angle = Snap.Vector.Angle(newElecBasePointMTD - minP, newElecBasePointMTD - origin); var topViewTopElecBasePoint = EdmDraw.DrawBusiness.CreateVerticalOrddimension( topView.Tag, originPoint.NXOpenTag, topViewTopMargin.NXOpenTag, elecBasePoint.NXOpenTag , angle , origin , Snap.Compute.Distance(newElecBasePointMTD, topViewTopMargin) ); EdmDraw.DrawBusiness.SetToleranceType(topViewTopElecBasePoint); tempX -= edmConfig.DimensionMpr32 * 2; }); if (positionings.Count > 1) { positionings.ForEach(p => { var elecBasePoint = tempDic[p]; var bps = EdmDraw.DrawBusiness.GetDrawBorderPoint(topView, p.Electrode.ElecBody); var bpXs = Enumerable.Select(bps, u => u.X); var bpYs = Enumerable.Select(bps, u => u.Y); var bpX = Math.Abs(bpXs.Max() - bpXs.Min()) * 2 / 3; var bpY = Math.Abs(bpYs.Max() - bpYs.Min()) * 2 / 3; var elecBasePointMTD = tempMTDDic[p]; var borderSize = topView.GetBorderSize(); var refPoint = topView.GetDrawingReferencePoint(); EdmDraw.DrawBusiness.CreateLabel(p.N, new Snap.Position(elecBasePointMTD.X - bpX, elecBasePointMTD.Y - bpY), new Snap.Position(), topView.Tag, elecBasePoint.NXOpenTag); }); } return(topView); }
/// <summary> /// 创建注释 /// </summary> void CreateNodeInfo(ElecManage.Electrode elec, EdmDraw.EdmConfig edmConfig) { var properties = edmConfig.PropertyInfos ?? new List <EdmDraw.EdmConfig.PropertyInfo>(); var propertiesDic = new Dictionary <string, List <EdmDraw.EdmConfig.PropertyInfo> >(); properties.ForEach(u => { var displayName = u.DisplayName; var dValue = string.Empty; if (displayName.Contains("-")) { var splits = displayName.Split('-'); displayName = splits.FirstOrDefault(); dValue = splits.LastOrDefault(); } if (!propertiesDic.ContainsKey(displayName)) { propertiesDic.Add(displayName, new List <EdmDraw.EdmConfig.PropertyInfo> { u }); } else { propertiesDic[displayName].Add(u); } }); var elecInfo = elec.GetElectrodeInfo(); var edmNodeInfo = new EdmDraw.EDMNodeInfo(); edmNodeInfo.电极材质 = elecInfo.MAT_NAME; edmNodeInfo.电极类型 = elecInfo.UNIT; edmNodeInfo.电极层 = elec.ElecBody.Layer.ToString(); edmNodeInfo.电极名称 = elecInfo.Elec_Name; edmNodeInfo.模号 = elecInfo.EACT_MODELNO; edmNodeInfo.工件名称 = elecInfo.EACT_PARTNO; edmNodeInfo.精公数量 = elecInfo.FINISH_NUMBER.ToString(); edmNodeInfo.中公数量 = elecInfo.MIDDLE_NUMBER.ToString(); edmNodeInfo.粗公数量 = elecInfo.ROUGH_NUMBER.ToString(); edmNodeInfo.精公火花位 = elecInfo.FINISH_SPACE.ToString(); edmNodeInfo.中公火花位 = elecInfo.MIDDLE_SPACE.ToString(); edmNodeInfo.粗公火花位 = elecInfo.ROUGH_SPACE.ToString(); edmNodeInfo.摇摆方式 = elecInfo.EDMROCK; edmNodeInfo.制图 = "EACT"; edmNodeInfo.日期 = DateTime.Now.ToShortDateString(); foreach (var item in propertiesDic) { var displayName = item.Key; var pValue = EdmDraw.Helper.GetPropertyValue(edmNodeInfo, displayName) ?? string.Empty; var u = item.Value.FirstOrDefault(p => (p.DisplayName.Contains(displayName) && p.DisplayName.Contains(pValue.ToString())) || p.DisplayName.Contains(displayName)); if (u.Ex == "1") { EdmDraw.DrawBusiness.CreateTick(new Snap.Position(u.LocationX, u.LocationY)); } else { EdmDraw.DrawBusiness.CreateNode(pValue.ToString(), new Snap.Position(u.LocationX, u.LocationY)); } } }
/// <summary> /// 制图首选项初始化 /// </summary> public static void InitPreferences(EdmConfig edmConfig) { var ufSession = NXOpen.UF.UFSession.GetUFSession(); int[] mpi = new int[100]; double[] mpr = new double[70]; string radius_value = string.Empty; string diameter_value = string.Empty; ufSession.Drf.AskPreferences(mpi, mpr, out radius_value, out diameter_value); if (!edmConfig.IsUseSystemConfig) { var textStyle = new Snap.NX.TextStyle(); textStyle.SetFont(edmConfig.TextMpi88, Snap.NX.TextStyle.FontType.NX); textStyle.AlignmentPosition = Snap.NX.TextStyle.AlignmentPositions.MidCenter; var dimensionStyle = new Snap.NX.TextStyle(); dimensionStyle.SetFont(edmConfig.DimensionMpi85, Snap.NX.TextStyle.FontType.NX); dimensionStyle.AlignmentPosition = Snap.NX.TextStyle.AlignmentPositions.TopCenter; //文字对齐位置 首选项→公共→文字→对齐位置 mpi[30] = (int)textStyle.AlignmentPosition; //文字样式 首选项→公共→文字→文本参数→字体(将字体设置为blockfont) mpi[88] = textStyle.FontIndex; //文字样式 首选项→公共→文字→文本参数→设置字宽(粗细) mpi[89] = edmConfig.TextMpi89; //字大小 mpr[44] = edmConfig.TextMpr44; //文本长宽比 mpr[45] = edmConfig.TextMpr45; //字体间距 mpr[46] = edmConfig.TextMpr46; //尺寸小数位数 首选项→尺寸→文本→单位→小数位数 mpi[3] = edmConfig.DimensionMpi3; //设置公差类型 首选项→尺寸→公差→类型 //mpi[6] = edmConfig.DimensionMpi3; //设置尺寸文本方向 首选项→尺寸→文本→方向和位置→方向 mpi[9] = (int)dimensionStyle.AlignmentPosition;; //小数点样式 首选项→尺寸→文本→单位→小数分隔符 //mpi[16] = 1; //首选项→尺寸→文本→附加文件→设置字体 mpi[85] = dimensionStyle.FontIndex; //首选项→尺寸→文本→附加文件→设置字宽(粗细) mpi[86] = edmConfig.DimensionMpi86; //尺寸字大小 mpr[32] = edmConfig.DimensionMpr32; //尺寸长宽比 mpr[33] = edmConfig.DimensionMpr33; //尺寸间距 mpr[34] = edmConfig.DimensionMpr34; //首选项→尺寸→文本→单位→显示后置零(默认显示尾零) mpi[90] = edmConfig.DimensionMpi90; } ufSession.Drf.SetPreferences(mpi, mpr, radius_value, diameter_value); }
/// <summary> /// 创建基本视图 /// </summary> public static NXOpen.Drawings.BaseView CreateBaseView(NXOpen.Drawings.DrawingSheet ds, NXOpen.Tag modelViewTag, List <NXOpen.TaggedObject> selections, Snap.Position pos, Snap.Position size, EdmConfig config) { var sList = Enumerable.Select(selections, u => Snap.NX.NXObject.Wrap(u.Tag).Layer).ToList(); SetShowLayers(sList, config.EdmDrfLayer); sList.Add(config.EdmDrfLayer); var workPart = NXOpen.Session.GetSession().Parts.Work; Snap.NX.Part snapWorkPart = workPart; var theUFSession = NXOpen.UF.UFSession.GetUFSession(); //抑制视图的边界显示 theUFSession.Draw.SetBorderDisplay(false); NXOpen.UF.UFDraw.ViewInfo view_info; theUFSession.Draw.InitializeViewInfo(out view_info); view_info.view_status = NXOpen.UF.UFDraw.ViewStatus.ActiveView;//UF_DRAW_ACTIVE_VIEW; view_info.anchor_point = Tag.Null; view_info.view_scale = 1; view_info.use_ref_pt = false; view_info.inherit_boundary = false; double[] dwg_point = { pos.X, pos.Y }; Tag draw_view_tag; theUFSession.Draw.ImportView(ds.Tag, modelViewTag, new double[] { ds.Length / 2, ds.Height / 2 }, ref view_info, out draw_view_tag); string viewName; theUFSession.Obj.AskName(draw_view_tag, out viewName); SetViewDisplayEx(ds.Tag, draw_view_tag); var allObj = new List <NXOpen.NXObject>(); allObj.AddRange(Enumerable.Select(workPart.Bodies.ToArray().Where(u => sList.Contains(u.Layer)), m => m as NXObject)); allObj.AddRange(Enumerable.Select(workPart.Points.ToArray().Where(u => sList.Contains(u.Layer)), m => m as NXObject)); allObj.AddRange(Enumerable.Select(workPart.Lines.ToArray().Where(u => sList.Contains(u.Layer)), m => m as NXObject)); allObj.AddRange(Enumerable.Select(workPart.Curves.ToArray().Where(u => sList.Contains(u.Layer)), m => m as NXObject)); allObj.AddRange(Enumerable.Select(workPart.Sketches.ToArray().Where(u => sList.Contains(u.Layer)), m => m as NXObject)); allObj.AddRange(Enumerable.Select(workPart.Axes.ToArray().Where(u => sList.Contains(u.Layer)), m => m as NXObject)); allObj.AddRange(Enumerable.Select(workPart.Datums.ToArray().Where(u => sList.Contains(u.Layer)), m => m as NXObject)); allObj.Distinct().ToList().ForEach(u => { if (selections.Where(m => u.Tag == m.Tag).Count() <= 0) { SnapEx.Ex.UC6400(viewName, u.Tag); } }); theUFSession.Draw.DefineBoundByObjects(draw_view_tag, selections.Count, Enumerable.Select(selections, u => u.Tag).ToArray()); theUFSession.Draw.UpdateOneView(ds.Tag, draw_view_tag); var borderSize = GetBorderSize(draw_view_tag); theUFSession.Draw.SetViewScale(draw_view_tag, new double[] { size.X / borderSize.X, size.Y / borderSize.Y }.Min()); theUFSession.Draw.MoveView(draw_view_tag, dwg_point); //theUFSession.Draw.UpdateOneView(ds.Tag, draw_view_tag); return(NXOpen.Utilities.NXObjectManager.Get(draw_view_tag) as NXOpen.Drawings.BaseView); }
/// <summary> /// 创建表格 /// </summary> public static NXOpen.Tag CreateTabnot(Snap.Position origin, int rowCount, int columnCount, double rowHeight, double columnWidth, EdmConfig edmConfig) { var workPart = Snap.Globals.WorkPart.NXOpenPart; var theUFSession = NXOpen.UF.UFSession.GetUFSession(); var tableParam = new NXOpen.UF.UFDraw.TabnotParams(); //设置单元格默认样式 NXOpen.UF.UFTabnot.CellPrefs cellPrefs = new NXOpen.UF.UFTabnot.CellPrefs(); theUFSession.Tabnot.AskDefaultCellPrefs(out cellPrefs); cellPrefs.nm_fit_methods = 2; cellPrefs.fit_methods[0] = NXOpen.UF.UFTabnot.FitMethod.FitMethodAutoSizeText; //UF_TABNOT_fit_method_auto_size_text; cellPrefs.fit_methods[1] = NXOpen.UF.UFTabnot.FitMethod.FitMethodAutoSizeRow; //UF_TABNOT_fit_method_auto_size_row; cellPrefs.text_density = 3; cellPrefs.zero_display = NXOpen.UF.UFTabnot.ZeroDisplay.ZeroDisplayZero; theUFSession.Tabnot.SetDefaultCellPrefs(ref cellPrefs); //创建的表格信息 tableParam.position = new double[3]; tableParam.position[0] = origin.X; tableParam.position[1] = origin.Y; tableParam.position[2] = origin.Z; tableParam.range_start.row = 1; tableParam.range_start.col = 1; tableParam.range_end.row = rowCount; tableParam.range_end.col = columnCount; //标题; tableParam.title_cell.row = 0; //标题; tableParam.title_cell.col = 0; tableParam.ug_aspect_ratio = 1.0; tableParam.border_type = NXOpen.UF.UFDraw.TabnotBorderType.TabnotBorderTypeSingle; tableParam.border_width = 0; //标题; tableParam.use_title_cell = false; //网络线使用; tableParam.use_grid_lines = true; tableParam.use_vert_grid_lines = true; tableParam.use_horiz_grid_lines = true; tableParam.use_row_hdr_grid_lines = true; tableParam.use_col_hdr_grid_lines = true; tableParam.auto_size_cells = false; NXOpen.Tag tabularNote = NXOpen.Tag.Null; theUFSession.Draw.CreateTabularNote(ref tableParam, out tabularNote); //设置列宽 for (int i = 0; i < columnCount; i++) { DraftingHelper.SetTabularColumnWidth(i, columnWidth, tabularNote); } //设置行高 for (int i = 0; i < rowCount; i++) { DraftingHelper.SetTabularRowHeight(i, rowHeight, tabularNote); } return(tabularNote); //var tabnot=theUFSession.Tabnot; //var section_prefs = new NXOpen.UF.UFTabnot.SectionPrefs(); //theUFSession.Tabnot.AskDefaultSectionPrefs(out section_prefs); //section_prefs.border_width = 60; //var tabular_note = NXOpen.Tag.Null; //theUFSession.Tabnot.Create(ref section_prefs, origin.Array, out tabular_note); //var tabel=NXOpen.Utilities.NXObjectManager.Get(tabular_note) as NXOpen.Annotations.Table; //var tableSectionBuilder1 = workPart.Annotations.TableSections.CreateTableSectionBuilder(null); //tableSectionBuilder1.NumberOfRows = rowCount; //tableSectionBuilder1.NumberOfColumns = columnCount; //tableSectionBuilder1.ColumnWidth = columnWidth; //tableSectionBuilder1.RowHeight = rowHeight; //tableSectionBuilder1.Origin.OriginPoint = origin; //tableSectionBuilder1.Commit(); //tableSectionBuilder1.Destroy(); }