切换到宽版
  • 1146阅读
  • 16回复

[插件]宏的源代码:多个零件按多点批量打断 [复制链接]

上一主题 下一主题
离线hardyleumg
 

发帖
412
金币
425
怪币
0
只看楼主 倒序阅读 楼主  发表于: 2023-03-19
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Windows.Forms;
  6. using Tekla.Structures.Geometry3d;
  7. using Tekla.Structures.Model;
  8. using Tekla.Structures.Model.Operations;
  9. using Tekla.Structures.Model.UI;
  10. using T3D = Tekla.Structures.Geometry3d;
  11. using TSO = Tekla.Structures.Model.Operations;
  12. namespace Tekla.Technology.Akit.UserScript
  13. {
  14.     
  15.     public class Script
  16.     {
  17.         struct Point_and_Distance
  18.         {
  19.             public T3D.Point myPoint;
  20.             public double myDistance;
  21.         };
  22.         public static void Run(Tekla.Technology.Akit.IScript akit)
  23.         {
  24.             Model ThisModel = new Model();
  25.             try
  26.             {
  27.                 //拾取需要断开的梁
  28.                 Picker myPicker = new Picker();
  29.                 List<Point_and_Distance> myPointList = new List<Point_and_Distance>();
  30.                 ModelObjectEnumerator myBeamsToBeBreak = myPicker.PickObjects(Picker.PickObjectsEnum.PICK_N_PARTS, "请拾取需要断开的梁,按中键结束") as ModelObjectEnumerator;
  31.               
  32.                //拾取断开的位置
  33.                Picker picker = new Picker();
  34.                List<T3D.Point> pickPoints = new List<T3D.Point>();
  35.                try
  36.                {
  37.                     while (true)
  38.                     {
  39.                         T3D.Point pickPoint = picker.PickPoint("请拾取断开点,按ESC结束");
  40.                         if (pickPoint == null) break;
  41.                         pickPoints.Add(pickPoint);
  42.                     }
  43.                }
  44.                 catch (Exception)
  45.                 {
  46.                     TSO.Operation.DisplayPrompt("拾取断开点完成。");
  47.                 }
  48.                 while (myBeamsToBeBreak.MoveNext())
  49.                 {
  50.                     if (myBeamsToBeBreak.Current != null)
  51.                     {
  52.                         Beam myBeam = myBeamsToBeBreak.Current as Beam;
  53.                         foreach (T3D.Point pickPoint in pickPoints)
  54.                         {
  55.                             double myDistance = Distance.PointToPoint(pickPoint, myBeam.StartPoint);
  56.                             Point_and_Distance myPoint_and_Distance = new Point_and_Distance();
  57.                             myPoint_and_Distance.myPoint = pickPoint;
  58.                             myPoint_and_Distance.myDistance = myDistance;
  59.                             myPointList.Add(myPoint_and_Distance);
  60.                         }
  61.                         List<Point_and_Distance> myPointListOrderByDistance = myPointList.OrderByDescending(s => s.myDistance).ToList<Point_and_Distance>();
  62.                         foreach (Point_and_Distance item in myPointListOrderByDistance)
  63.                         {
  64.                             Operation.Split(myBeam, item.myPoint);
  65.                         }
  66.                     }
  67.                 }
  68.                 ThisModel.CommitChanges();
  69.                 TSO.Operation.DisplayPrompt("操作完成!");
  70.             }
  71.                                 
  72.             catch (Exception)
  73.             {
  74.                 TSO.Operation.DisplayPrompt("操作中断!");
  75.             }
  76.         }
  77.     }
  78. }
[ 此帖被hardyleumg在2023-03-21 09:54重新编辑 ]
离线hardyleumg

发帖
412
金币
425
怪币
0
只看该作者 置顶 (来自7楼) 发表于: 2023-03-21
— (奇奇怪) 执行 帖内置顶 操作 (2023-03-21 10:38) —
2023年3月21日09:55:01更新一下
改进:
1、先选断开的梁,再选点,符合平常操作习惯;
2、取消弹窗提示;
离线wanggang1213

发帖
3747
金币
5387
怪币
9
只看该作者 沙发  发表于: 2023-03-19
          
离线jtky520

发帖
952
金币
2975041
怪币
4
只看该作者 板凳  发表于: 2023-03-19
这个有点厉害了
离线hzyhzjjzh

发帖
1163
金币
377
怪币
0
只看该作者 地板  发表于: 2023-03-19
谢谢楼主分享
离线1170643061

发帖
1040
金币
1386
怪币
0
只看该作者 4楼 发表于: 2023-03-20
    
离线夜流年

发帖
976
金币
3412
怪币
0
只看该作者 5楼 发表于: 2023-03-20
多来点
离线o591896937

发帖
104
金币
4
怪币
0
只看该作者 6楼 发表于: 2023-03-20
其实表示看不懂
离线hardyleumg

发帖
412
金币
425
怪币
0
只看该作者 7楼 发表于: 2023-03-21
— (奇奇怪) 执行 帖内置顶 操作 (2023-03-21 10:38) —
2023年3月21日09:55:01更新一下
改进:
1、先选断开的梁,再选点,符合平常操作习惯;
2、取消弹窗提示;
离线171127557

发帖
310
金币
508
怪币
0
只看该作者 8楼 发表于: 2023-03-21
          
离线tswuming

发帖
382
金币
64
怪币
0
只看该作者 9楼 发表于: 2023-03-23
        
离线李浩东

发帖
2894
金币
13
怪币
0
只看该作者 10楼 发表于: 2023-03-24
  
离线ta888

发帖
58
金币
46
怪币
0
只看该作者 11楼 发表于: 2023-03-24
      
离线sapphire123

发帖
136
金币
23
怪币
0
只看该作者 12楼 发表于: 2023-03-29
不错不错不错
离线sz8806ts

发帖
1811
金币
2828
怪币
0
只看该作者 13楼 发表于: 2023-03-29
看不懂
离线a1037445262

发帖
23
金币
5
怪币
0
只看该作者 14楼 发表于: 2023-07-18
没用过宏,如何使用,有没有大佬告知一下
离线lynchlinn

发帖
54
金币
2
怪币
0
只看该作者 15楼 发表于: 2023-09-15
你牛逼啊   啊          
离线enhance2012

发帖
217
金币
3
怪币
0
只看该作者 16楼 发表于: 2023-09-19