<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      基于.NET三維控件的個性化管道軟件開發

      1 簡介

      管道廣泛用于化工、工廠、建筑、市政等方面,關系到國計民生。雖然管道設計軟件種類繁多,有的也非常強大(然而也非常昂貴),但也并不能完全滿足個性化需要。 如何快速開發一款滿足自己需求的三維管道設計軟件?本文提供一種基于AnyCAD .NET SDK的開發解決方案,不妨一試。


       

      2 方案

      《.NET6: 開發基于WPF的摩登三維工業軟件》系列提供了一種插件式的開發工業軟件的框架(源碼詳見:https://gitee.com/anycad/RapidCAX )。本案例基于該框架開發。

      整體上采用MVVM模式,以直管為例,整體架構如下:

       

       

      注:上述架構在《.NET6: 開發基于WPF的摩登三維工業軟件》系列有詳細說明。

      3 實現

      本案例中,管道由直管和彎管組成,兩種的參數不一樣,因此需要按照不同的類型來處理。由于篇幅所限,此處以直管為例的MVVM架構實現。

      3.1 Model實現

          // 定義管子的參數
          public class PipeModel : ElementModel
          {
              public GPnt Position = new GPnt();
              public GDir Direction = new GDir();
              public double Thickness = 2;
              public double InnerRadius = 5;
              public double Length = 100;
              public PipeModel()
              {
              }
      
              // 根據參數創建幾何
              public TopoShape CreateShape()
              {
                 return ShapeBuilder.MakeTube(Position, Direction, InnerRadius, Thickness, Length);
              }
          }
          
          //參數化機制實現
          class PipeSchema : ElementSchema
          {
              public PipeSchema()
                  : base(nameof(PipeModel))
              {
                  this.SetTitle("管");
              }
      
              public override ElementModel CreateModel()
              {
                  return new PipeModel();
              }
      
              public override Element OnCreateInstance()
              {
                  return new ShapeInstance();
              }
      
              public override bool OnParameterChanged(Document document, Element instance, ParameterDict parameters)
              {
                  var element = ShapeInstance.Cast(instance);
                  if (element == null)
                      return false;
      
                  PipeModel model = new PipeModel();
                  model.Load(parameters);
      
                  var shape = model.CreateShape();
      
                  element.SetShape(shape);
      
                  return true;
              }
          }
      

      3.2 ViewModel實現

         internal class PipeViewModel : ElementViewModel
          {        
              public PipeModel Model { get { return (PipeModel)_Model; } }
              public PipeViewModel(Element model, Document doc)
                  : base(new PipeModel(), model, doc)
              {
                  SetPickFilter(EnumShapeFilter.VertexEdgeFace);
              }
      
              public GPnt Position
              {
                  get => Model.Position;
                  set => SetProperty(nameof(Position), ref Model.Position, value, nameof(X), nameof(Y), nameof(Z));
              }
      
              public double X
              {
                  get => Model.Position.x;
                  set 
                  {
                      if(X != value)
                      {
                          Position = new GPnt(value, Model.Position.y, Model.Position.z);
                      }
                  }
              }
      
              public double Y
              {
                  get => Model.Position.y;
                  set
                  {
                      if (Y != value)
                      {
                          Position = new GPnt(Model.Position.x, value, Model.Position.z);
                      }
                  }
              }
              public double Z
              {
                  get => Model.Position.z;
                  set
                  {
                      if (Z != value)
                      {
                          Position = new GPnt(Model.Position.x, Model.Position.y, value);
                      }
                  }
              }
      
              public GDir Direction
              {
                  get => Model.Direction;
                  set => SetProperty(nameof(Direction), ref Model.Direction, value);
              }
      
              public double InnerRadius
              {
                  get => Model.InnerRadius;
                  set => SetProperty(nameof(InnerRadius), ref Model.InnerRadius, value, 
                      () => { return value > 0; }, nameof(OutterRadius));
              }
      
              public double Thickness
              {
                  get => Model.Thickness;
                  set => SetProperty(nameof(Thickness), ref Model.Thickness, value,
                      () => { return value > 0; }, nameof(OutterRadius));
              }
              public double Length
              {
                  get => Model.Length;
                  set => SetProperty(nameof(Length), ref Model.Length, value, ()=>{ return value > 0; });
              }
      
              public double OutterRadius
              {
                  get => Model.InnerRadius + Model.Thickness;
              }
              
              //...
          }
      

      3.3 View實現

      xaml和界面布局相關,此處省略。

      4 運行效果

       

      程序下載:

      鏈接: https://pan.baidu.com/s/1KEzQbYhRLAsWb5lC6S0O2g?pwd=pipe 
      
      提取碼: pipe 
      

      5 總結

      本文從技術的角度提供一種管道建模的方案,能夠快速驗證想法,但距離實際應用還有一段距離,達到生產應用還需要精雕細琢。基于AnyCAD Rapid .NET框架提供的建模、顯示、數據管理等基礎設施,可以快速驗證產品原型,大大地縮短產品研發周期,使產品能夠更快的產生價值。

       

       
       
      posted @ 2022-11-28 09:33  AnyCAD  閱讀(445)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 蜜桃成熟色综合久久av| 久久99精品中文字幕在| 欧美老熟妇喷水| 视频免费完整版在线播放| 亚洲另类无码专区国内精品| 又爽又黄又无遮掩的免费视频| 亚洲中文字幕精品第三区| 中文字幕va一区二区三区| 久久天天躁狠狠躁夜夜2020老熟妇 | 自拍偷拍视频一区二区三区| 色又黄又爽18禁免费视频| 无码专区 人妻系列 在线| 免费午夜无码视频在线观看| 亚洲成av人在线播放无码| 国厂精品114福利电影免费| 爱性久久久久久久久| 动漫AV纯肉无码AV电影网| 男女真人国产牲交a做片野外 | 1区2区3区4区产品不卡码网站| 不卡一区二区国产在线| 久爱www人成免费网站| 日韩av一区二区高清不卡| 秋霞av鲁丝片一区二区 | 激情综合网激情五月我去也| 国产首页一区二区不卡| 国产成人精品无码播放| 免费无码一区无码东京热| 黄瓜一区二区三区自拍视频| 精品无码一区在线观看| 日韩V欧美V中文在线| 欧美成a人片在线观看久| 国产粉嫩美女一区二区三| 久久精品久久黄色片看看| 亚洲精品久综合蜜| 国产精品高清视亚洲乱码| 自拍偷拍一区二区三区四| 亚洲第一区二区快射影院| 东京热人妻丝袜无码AV一二三区观| 精品人妻伦一二三区久久aaa片| 久久婷婷成人综合色综合| 日韩精品一区二区三区日韩|