Пример #1
0
    private void ListeningGestureState()
    {
        points.Add(drawingFinger.transform.position);

        if (hand.buttonsListener.GetStandardInteractionButtonUp())
        {
            CustomSymbol customSymbol = CustomSymbolFactory.CreateSymbol(points);
            switch (customSymbol.Type)
            {
            case SymbolType.Unrecognized:
                break;

            case SymbolType.Circle:
                Game.EventService.SendMessage(new CastGodsHandMessage(customSymbol));
                break;

            case SymbolType.S:
                break;

            case SymbolType.Line:
                break;
            }

            ToIdleState();
        }
    }
Пример #2
0
        /// <summary>
        /// 保存自定义模版
        /// </summary>
        /// <param name="savePath">保存路径</param>
        private void SaveSymbolSet(string savePath)
        {
            var symbolSetName = txt_SymbolSetName.Text.Trim();

            if (string.IsNullOrEmpty(txt_SymbolSetName.Text.Trim()))
            {
                lal_tip.Text = "请输入模版名称!";
                txt_SymbolSetName.Focus();
                return;
            }
            if (!Directory.Exists(savePath))
            {
                Directory.CreateDirectory(savePath);
            }
            if (string.IsNullOrEmpty(txt_X.Text.Trim()))
            {
                lal_basepoint.ForeColor = Color.Red;
                lal_basepoint.Text      = "请拾取基点!";
                return;
            }

            if (objCollection.Count > 0)
            {
                Btn_CustomSymbol.Enabled = false;
                var objIds    = PublicMethod.Instance.ObjectIdCollectionToOjbectIds(objCollection);
                var xmlPath   = string.Format(@"{0}\{1}.xml", savePath, symbolSetName);
                var basePoint = new Point3d(double.Parse(txt_X.Text.Trim()), double.Parse(txt_Y.Text.Trim()), 0);
                Lal_SaveTip.Text = "正在创建自定义模版,请稍候…";
                Lal_SaveTip.Refresh();
                //创建自定义符号
                var result = CustomSymbol.CreateCustomsSymbol(xmlPath, objIds, basePoint);
                Lal_SaveTip.Text = string.Empty;
                PublicMethod.Instance.AlertDialog(result?"保存成功!":"保存失败!");
                Btn_CustomSymbol.Enabled = true;
                if (!result)
                {
                    if (File.Exists(imgPath))
                    {
                        File.Delete(imgPath);
                    }
                }
                Close();
            }
            else
            {
                lal_EntityCount.Text      = "请选择对象!";
                lal_EntityCount.ForeColor = Color.Red;
            }
        }
Пример #3
0
 /// <summary>
 /// 新增符号
 /// </summary>
 /// <param name="symbolPath">符号路径</param>
 /// <param name="blockName">块名称</param>
 private void AddSymbol(string symbolPath, string blockName)
 {
     try
     {
         isInsertSymbol = true;
         //单个设备新增
         if (!IsCustomGroup())
         {
             //特殊符号处理
             var sdf = new SpecilaDevField
             {
                 Ssbyq   = GenerateHelper.Unrf.byqFid,
                 Ssgt    = GenerateHelper.Unrf.gtFid,
                 Sstj    = GenerateHelper.Unrf.tjFid,
                 Sskgg   = GenerateHelper.Unrf.kggFid,
                 Ssdf    = GenerateHelper.Unrf.dfFid,
                 Sstqhtj = GenerateHelper.Unrf.tqtjFid,
                 SsZx    = GenerateHelper.Unrf.zxFid
             };
             //记忆公共属性
             AddDevToDict(CurrentFno, CurPropertyObj);
             //实体存在的点符号
             DCadApi.InsertSymbol(File.Exists(symbolPath) ? blockName : symbolPath, CurPropertyObj, sdf);
         }
         else
         {
             //插入自定义符号
             if (File.Exists(symbolPath))
             {
                 CustomSymbol.LoadSymbolSetXMl(symbolPath, blockName);
             }
         }
         isInsertSymbol = false;
     }catch
     {
         isInsertSymbol = false;
     }
 }
Пример #4
0
    public static CustomSymbol CreateSymbol(List <Vector3> points)
    {
        List <Vector3> correctedCountPoints = CorrectPointsCount(points);
        Vector3        spellCenter          = SymbolsHelper.CalculateSymbolCenter(correctedCountPoints);

        Basis basisBasedOnPlayerSight       = CreateBasisBasedOnPlayerSight(spellCenter, Player.instance.headCollider.transform.position);
        Basis basisToProjectPointsToXyPlane = CreateBasisToProjectPointsToXyPlane(basisBasedOnPlayerSight);

        List <Vector3> poitnsProjectedToPlaneInPlayerSightBasis = MathHelper.ProjectPointsToPlane(correctedCountPoints, spellCenter, basisBasedOnPlayerSight.Forward);
        List <Vector3> pointsProjectedToXyPlane = ProjectPointsToXyPlane(poitnsProjectedToPlaneInPlayerSightBasis, spellCenter, basisToProjectPointsToXyPlane);
        List <Vector3> resizedPoints            = ResizeShapeToFitRecognitionSquare(pointsProjectedToXyPlane);

        SymbolAnalyzerResult result = SymbolAnalyzer.Instance.Analyze(resizedPoints);

        CustomSymbol newSymbol = new CustomSymbol();

        newSymbol.Type        = result.IsPassed() ? result.SymbolType : SymbolType.Unrecognized;
        newSymbol.Center      = spellCenter;
        newSymbol.Orientation = basisBasedOnPlayerSight;
        newSymbol.Size        = SymbolsHelper.GetWidthAndHeightOfShape(pointsProjectedToXyPlane).MaxDimension;

        return(newSymbol);
    }
 public CastGodsHandMessage(CustomSymbol symbol)
 {
     this.symbol = symbol;
 }