【问题标题】:How can get Note's position which in SketchBlock(SolidWorks)如何获得笔记在 SketchBlock(SolidWorks) 中的位置
【发布时间】:2017-04-03 07:52:03
【问题描述】:

我试图从 draw 中获取所有注释的文本和位置。 我可以,除非是阻塞。

当我从块中获取注释时,获取文本是成功的但是坐标很奇怪。

      SketchManager swSketch = swModel.SketchManager;
      var blocks = swSketch.GetSketchBlockDefinitions();
      for (int z = 0; z < blocks.Length; z++)
      {
           SketchBlockDefinition block = blocks[z];
           var swNotes = block.GetNotes();

           for (int x = 0; x < swNotes.Length; x++)
           {
               PosX = "";
               PosY = "";
               displayText = "";
               Note swBlockNote = swNotes[x];

               swAnn = swBlockNote.GetAnnotation();
               swDispData = swAnn.GetDisplayData();

               dPoint = swDispData.GetTextPositionAtIndex(0);
               dPoint[0] = dPoint[0] * 1000;
               dPoint[1] = dPoint[1] * 1000;
               PosX_num = dPoint[0].ToString("########0.#########");
               PosY_num = dPoint[1].ToString("########0.#########");
           }
      }

那个三角形是块状的,有注释文字“A123” 也有位置72.29mm、227.559mm

但是当我尝试进入程序时,三角形的位置是 X:0.002375 Y:-0.02656。

我能得到一些想法,真诚地等待你的帮助。谢谢。

【问题讨论】:

    标签: solidworks


    【解决方案1】:

    BlockDefinitions 只是定义。 我必须得到这样的 BlockInstances。

    Sketch sktch = swView.GetSketch();
    var blockInstance = sktch.GetSketchBlockInstances();
    

    然后我可以得到布洛克的位置。 但是我们应该注意从基于块实例的视图位置获取的块位置。

    例如,如果您将一个块定位到位置为 0 的视图,0 则您可以获得正确的块位置,只需尝试从块实例中获取位置。

    但是,如果您将一个块定位到具有位置的视图,则必须将视图的位置与块的位置相加。 此外,Note 的位置相同。块中的注释具有基于位置的 BlcokDefinition。

    请参考这个示例代码,因为我不能用英语很好地解释。

    Sketch sktch = swView.GetSketch();
    var blockInstance = sktch.GetSketchBlockInstances();
    if (blockInstance != null)
    {
        double[] blockPos = null;
        double[] viewPos = null;
        for (int instanceCnt = 0; instanceCnt < blockInstance.Length; instanceCnt++)
        {
             SketchBlockInstance instance = blockInstance[instanceCnt];
             SketchBlockDefinition block = instance.Definition;
             MathPoint InstanceMP = instance.InstancePosition;
             blockPos = InstanceMP.ArrayData;
             viewPos = swView.Position;
             var swNotes = block.GetNotes();
             for (int x = 0; x < swNotes.Length; x++)
             {
                  Note swBlockNote = swNotes[x];
    
                  swAnn = swBlockNote.GetAnnotation();
                  swDispData = swAnn.GetDisplayData();
                  dPoint = swDispData.GetTextPositionAtIndex(0);
                  dPoint[0] = (dPoint[0] * 1000) + (blockPos[0] * 1000) + (viewPos[0] * 1000);
                  dPoint[1] = (dPoint[1] * 1000) + (blockPos[1] * 1000) + (viewPos[1] * 1000);
             }
         }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-18
      • 2020-05-14
      • 2018-07-13
      • 2016-03-18
      • 2020-09-26
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 2023-02-22
      相关资源
      最近更新 更多