Beispiel #1
0
    /// <summary>
    /// 设置镜像属性
    /// </summary>
    void SetGeomcopyAttr(Snap.NX.Body body, NXOpen.Plane plane, bool isJC)
    {
        if (isJC)
        {
            return;
        }
        var electrode = ElecManage.Electrode.GetElectrode(body);

        if (electrode == null)
        {
            return;
        }
        electrode.InitAllFace();
        //var transRef = Snap.Geom.Transform.CreateReflection(new Snap.Geom.Surface.Plane(plane.Origin, plane.Normal));

        Snap.NX.Face preXFace = null, preYFace = null;

        body.Faces.ToList().ForEach(u =>
        {
            if (u.GetAttributeInfo().Where(m => m.Title == "EACT_ELECT_X_FACE").Count() > 0)
            {
                u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_X_FACE");
                u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_Y_FACE");
                preXFace = u;
            }
            else if (u.GetAttributeInfo().Where(m => m.Title == "EACT_ELECT_Y_FACE").Count() > 0)
            {
                u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_X_FACE");
                u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_Y_FACE");
                preYFace = u;
            }
        });

        //if (preXFace == null || preYFace == null) return;
        var topDir      = -electrode.BaseFace.GetFaceDirection();
        var orientation = ElecManage.Electrode.GetSidelongOrientation(new Snap.Orientation(topDir));
        var xFace       = electrode.BaseSideFaces.FirstOrDefault(u => SnapEx.Helper.Equals(orientation.AxisX, u.GetFaceDirection()));
        var yFace       = electrode.BaseSideFaces.FirstOrDefault(u => SnapEx.Helper.Equals(orientation.AxisY, u.GetFaceDirection()));

        if (xFace != null && yFace != null)
        {
            xFace.SetStringAttribute("EACT_ELECT_X_FACE", "1");
            yFace.SetStringAttribute("EACT_ELECT_Y_FACE", "1");
        }

        body.SetStringAttribute("EACT_EDM_OPERATE_DIR", ElecManage.Electrode.GetCNC_DIRECTION(topDir));
        body.SetStringAttribute("EACT_ELEC_QUADRANT_OF_CHAMFER", ((int)electrode.GetQuadrantType(orientation) + 1).ToString());
    }
Beispiel #2
0
 /// <summary>
 /// 设置基准角相关属性
 /// </summary>
 void SetJZJAttr(Snap.NX.Face _horizontalDatumFace, Snap.NX.Body body)
 {
     if (!toggle0.Value)
     {
         body.Faces.ToList().ForEach(u =>
         {
             if (u.GetAttributeInfo().Where(m => m.Title == "EACT_ELECT_X_FACE").Count() > 0)
             {
                 u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_X_FACE");
                 u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_Y_FACE");
                 u.SetStringAttribute("EACT_ELECT_Y_FACE", "1");
             }
             else if (u.GetAttributeInfo().Where(m => m.Title == "EACT_ELECT_Y_FACE").Count() > 0)
             {
                 u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_X_FACE");
                 u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_Y_FACE");
                 u.SetStringAttribute("EACT_ELECT_X_FACE", "1");
             }
         });
     }
 }
Beispiel #3
0
 /// <summary>
 /// 设置基准面
 /// </summary>
 static Snap.NX.Face SetBaseFace(Snap.NX.Block block, Vector normal)
 {
     Snap.NX.Face face = null;
     foreach (var f in block.Faces)
     {
         var n1    = Vector.Unit(f.Normal(f.BoxUV.MinU, f.BoxUV.MinV));
         var n2    = Vector.Unit(normal);
         var angle = Vector.Angle(n1, n2);
         if (angle == 0)
         {
             f.Name         = "BaseFace";
             f.Translucency = 50;
             face           = f;
         }
         else if (angle == 180)
         {
             f.Name = "BottomFace";
         }
     }
     return(face);
 }
Beispiel #4
0
    void SetEactElec(Snap.NX.Body body, Snap.NX.Face baseFace = null, Snap.NX.Face topFace = null, Snap.NX.Point basePoint = null)
    {
        selectBaseFace.SelectedObjects = new Snap.NX.NXObject[] { };
        selectTopFace.SelectedObjects  = new Snap.NX.NXObject[] { };
        selectBaseFacePointEx.Position = new Snap.Position();
        var pos = new Snap.Position();

        ElecManage.Electrode.GetEactElectrode(body, ref topFace, ref baseFace, ref basePoint, ref pos);
        if (baseFace != null)
        {
            selectBaseFace.SelectedObjects = new Snap.NX.NXObject[] { baseFace };
        }
        if (topFace != null)
        {
            selectTopFace.SelectedObjects = new Snap.NX.NXObject[] { topFace };
        }
        selectBaseFacePointEx.Position = pos;
        if (baseFace != null && topFace != null)
        {
            //更新尺寸
            var info = GetElecInfo(body);
            if (info != null)
            {
                strElecSize.Value        = info.ElecSize;
                strElecCuttingSize.Value = info.ElecCuttingSize(_configData, EactConfig.MatchJiaju.GetMatchJiajuValue(_configData, cbbChuckType.SelectedIndex));
            }
            else if (groupSElec.Show) //异形电极
            {
                var tempInfo = new ElecManage.ElectrodeInfo(body);
                var tempOri  = new Snap.Orientation(-baseFace.GetFaceDirection());
                strElecSize.Value        = tempInfo.GetElecSize(tempOri);
                strElecCuttingSize.Value = tempInfo.ElecCuttingSize(_configData, EactConfig.MatchJiaju.GetMatchJiajuValue(_configData, cbbChuckType.SelectedIndex), tempOri);
            }
            else
            {
                strElecSize.Value        = string.Empty;
                strElecCuttingSize.Value = string.Empty;
            }
        }
    }
Beispiel #5
0
 void UpdateEactElec(Snap.NX.Body body)
 {
     Snap.NX.Face  topFace   = null;
     Snap.NX.Face  baseFace  = null;
     Snap.NX.Point basePoint = null;
     Snap.Position pos       = new Snap.Position();
     ElecManage.Electrode.GetEactElectrode(body, ref topFace, ref baseFace, ref basePoint, ref pos);
     topFace  = selectTopFace.SelectedObjects.FirstOrDefault() as Snap.NX.Face;
     baseFace = selectBaseFace.SelectedObjects.FirstOrDefault() as Snap.NX.Face;
     pos      = selectBaseFacePointEx.Position;
     if (basePoint == null)
     {
         basePoint       = Snap.Create.Point(pos);
         basePoint.Layer = body.Layer;
         basePoint.Color = System.Drawing.Color.Green;
     }
     else
     {
         basePoint.Position = pos;
     }
     ElecManage.Electrode.SetEactElectrode(body, ref topFace, ref baseFace, ref basePoint);
 }
Beispiel #6
0
    public override void Apply()
    {
        var faces = new List <NXOpen.Face>();

        face_select0.GetSelectedObjects().ToList().ForEach(u =>
        {
            var face = u as NXOpen.Face;
            if (face != null)
            {
                faces.Add(face);
            }
        });
        var ds = new List <double>();

        if (enum0.ValueAsString == OffsetType.ALL)
        {
            for (int i = 0; i < 6; i++)
            {
                ds.Add(expressionALL.Value);
            }
        }
        else
        {
            ds.Add(expressionXPositive.Value);
            ds.Add(expressionXNegative.Value);
            ds.Add(expressionYPositive.Value);
            ds.Add(expressionYNegative.Value);
            ds.Add(expressionZPositive.Value);
            ds.Add(expressionZNegative.Value);
        }

        var nxObject = SnapEx.Create.Box(faces, ds[0], ds[1], ds[2], ds[3], ds[4], ds[5]);

        Snap.NX.Body body     = nxObject.Bodies.FirstOrDefault();
        Snap.NX.Face snapFace = faces.FirstOrDefault();
        var          trimBody = Snap.Create.TrimBody(body, snapFace, true);

        trimBody.Orphan();
    }