예제 #1
0
    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;
    }
예제 #2
0
    /// <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);
    }
예제 #3
0
        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;
        }
예제 #4
0
        public static void WriteConfig(EdmConfig data)
        {
            var json = Newtonsoft.Json.JsonConvert.SerializeObject(data);

            File.WriteAllText(_path, json);
        }
예제 #5
0
 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);
 }
예제 #6
0
    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));
    }
예제 #7
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));
    }
예제 #8
0
    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);
    }
예제 #9
0
    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);
    }
예제 #10
0
    /// <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));
            }
        }
    }
예제 #11
0
        /// <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);
        }
예제 #12
0
        /// <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);
        }
예제 #13
0
        /// <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();
        }