基於Composer Player 模型載入和相關屬性設置

来源:http://www.cnblogs.com/w2011/archive/2016/12/27/6227844.html
-Advertisement-
Play Games

主要是基於達索軟體Composer Player、的基礎上做些二次開發。 public class ComposerToolBarSetting { public bool AntiAliasingOnIdle { get; set; }//抗鋸齒化 public bool AssySelectio ...


主要是基於達索軟體Composer Player、的基礎上做些二次開發。

 public class ComposerToolBarSetting
    {
        public bool AntiAliasingOnIdle { get; set; }//抗鋸齒化
        public bool AssySelectionMode { get; set; }//使能選擇裝配樹
        public bool AssySelectionModeViewportIndicator { get; set; }//裝配樹選擇模式
        public bool AutoKeyMode { get; set; }//使能自動鍵
        public bool AutoPlay { get; set; }        //自動播放
        public bool BorderMask { get; set; }//在控制項窗體應用border
        public bool CameraInertia { get; set; }//照相機慣性模式
        public bool CameraPlayMode { get; set; }//照相機播放模式
        public bool GroundGrid { get; set; }//地面
        public bool LoopPlay { get; set; }//迴圈播放
        public bool NoHighlight { get; set; }//高亮顯示
        public bool RemoveMeasurementCommands { get; set; }//移除測量工具條
        public bool RenderGroundShadow { get; set; }//渲染地面陰影
        public bool ShowAnnotationToolBar { get; set; }//註釋工具條
        public bool ShowAssemblyTreeBar { get; set; }//裝配樹
        public bool ShowBomTreeBar { get; set; }//BOM樹
        public bool ShowCameraToolBar { get; set; }//照相機工具條
        public bool ShowCameraViewToolBar { get; set; }//照相機視圖工具條
        public bool ShowCollabToolBar { get; set; }//協同工具條
        public bool ShowCollabTreeBar { get; set; }//協同樹
        public bool ShowCuttingPlaneToolBar { get; set; }//剖切工具條
        public bool ShowGeometryToolBar { get; set; }//幾何圖形工具條
        public bool ShowMain3DToolBar { get; set; }//主要3D工具條
        public bool ShowMarkerBar { get; set; }//標記工具條
        public bool ShowMeasurementToolBar { get; set; }//測量工具條
        public bool ShowPaper { get; set; }//顯示白紙頁面
        public bool ShowPropertyBar { get; set; }//屬性
        public bool ShowRedlineToolBar { get; set; }//紅線工具條
        public bool ShowRenderToolBar { get; set; }//渲染工具條
        public bool ShowStandardToolBar { get; set; }//標準工具條
        public bool ShowStatusBar { get; set; }//狀態條
        public bool ShowTimelineBar { get; set; }//時間線
        public bool ShowTreesBar { get; set; }//
        public bool ShowViewBar { get; set; }//視圖條
        public bool ShowVisibilityToolBar { get; set; }//可見性工具條
        public bool UseGUID { get; set; }//是否返回GUID
         
    }
Composer 工具欄
 public class ComposerManager
    {       
        /// <summary>
        /// 設置控制項的屬性
        /// </summary>
        /// <param name="player">控制項的名字</param>
        public static void SetComposerPlayerToolsBar(AxDS3DVIAPlayerActiveXLib.AxDS3DVIAPlayerActiveX player)
        {                                    
            player.AntiAliasingOnIdle = GetCompserPlayerToolBar().AntiAliasingOnIdle;
            player.AssySelectionMode = GetCompserPlayerToolBar().AssySelectionMode;
            player.AssySelectionModeViewportIndicator = GetCompserPlayerToolBar().AssySelectionModeViewportIndicator;
            player.AutoKeyMode = GetCompserPlayerToolBar().AutoKeyMode;
            player.AutoPlay = GetCompserPlayerToolBar().AutoPlay;
            player.BorderMask = GetCompserPlayerToolBar().BorderMask;
            player.CameraInertia = GetCompserPlayerToolBar().CameraInertia;
            player.CameraPlayMode = GetCompserPlayerToolBar().CameraPlayMode;
            player.GroundGrid = GetCompserPlayerToolBar().GroundGrid;
            player.LoopPlay = GetCompserPlayerToolBar().LoopPlay;
            player.NoHighlight = GetCompserPlayerToolBar().NoHighlight;
            player.RemoveMeasurementCommands = GetCompserPlayerToolBar().RemoveMeasurementCommands;
            player.RenderGroundShadow = GetCompserPlayerToolBar().RenderGroundShadow;
            player.ShowAnnotationToolBar = GetCompserPlayerToolBar().ShowAnnotationToolBar;
            player.ShowAssemblyTreeBar = GetCompserPlayerToolBar().ShowAssemblyTreeBar;
            player.ShowBOMTreeBar = GetCompserPlayerToolBar().ShowBomTreeBar;
            player.ShowCameraToolBar = GetCompserPlayerToolBar().ShowCameraToolBar;
            player.ShowCameraViewToolBar = GetCompserPlayerToolBar().ShowCameraViewToolBar;
            player.ShowCollabToolBar = GetCompserPlayerToolBar().ShowCollabToolBar;
            player.ShowCollabTreeBar = GetCompserPlayerToolBar().ShowCollabTreeBar;
            player.ShowCuttingPlaneToolBar = GetCompserPlayerToolBar().ShowCuttingPlaneToolBar;
            player.ShowGeometryToolBar = GetCompserPlayerToolBar().ShowGeometryToolBar;
            player.ShowMain3DToolBar = GetCompserPlayerToolBar().ShowMain3DToolBar;
            player.ShowMarkerBar = GetCompserPlayerToolBar().ShowMarkerBar;
            player.ShowMeasurementToolBar = GetCompserPlayerToolBar().ShowMeasurementToolBar;
            player.ShowPaper = GetCompserPlayerToolBar().ShowPaper;
            player.ShowPropertyBar = GetCompserPlayerToolBar().ShowPropertyBar;
            player.ShowRedlineToolBar = GetCompserPlayerToolBar().ShowRedlineToolBar;
            player.ShowRenderToolBar = GetCompserPlayerToolBar().ShowRenderToolBar;
            player.ShowStandardToolBar = GetCompserPlayerToolBar().ShowStandardToolBar;
            player.ShowStatusBar = GetCompserPlayerToolBar().ShowStatusBar;
            player.ShowTimelineBar = GetCompserPlayerToolBar().ShowTimelineBar;
            player.ShowTreesBar = GetCompserPlayerToolBar().ShowTreesBar;
            player.ShowViewBar = GetCompserPlayerToolBar().ShowViewBar;
            player.ShowVisibilityToolBar = GetCompserPlayerToolBar().ShowVisibilityToolBar;
            player.UseGUID = GetCompserPlayerToolBar().UseGUID;
        }

        /// <summary>
        /// 將字元類型轉化為Boolen類型
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        static bool StringToBool(string str)
        {
            bool result = false;
            if (str != null)
            {
                if (str == "false")
                {
                    result = false;
                }
                else if (str == "true")
                {
                    result = true;
                }
            }
            return result;
        }

        /// <summary>
        /// 將Boolen類型轉化為字元類型
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        static string BoolToString(bool result)
        {
            string str = "";
            if (result)
            {
                str = "true";
            }
            else
            {
                str = "false";
            }
            return str;
        }

        /// <summary>
        /// 讀取app.config里的key對應的值,並賦值給ComposerToolBarSetting類
        /// </summary>
        /// <returns></returns>
        public static ComposerToolBarSetting GetCompserPlayerToolBar()
        {
            ComposerToolBarSetting set = new ComposerToolBarSetting();
            
            set.AntiAliasingOnIdle = StringToBool(AppConfigManager.GetValue("AntiAliasingOnIdle", ConfigFileType.AppConfig));
            set.AssySelectionMode=StringToBool(AppConfigManager.GetValue("AssySelectionMode",ConfigFileType.AppConfig));
            set.AssySelectionModeViewportIndicator = StringToBool(AppConfigManager.GetValue("AssySelectionModeViewportIndicator", ConfigFileType.AppConfig));
            set.AutoKeyMode = StringToBool(AppConfigManager.GetValue("AutoKeyMode", ConfigFileType.AppConfig));
            set.AutoPlay = StringToBool(AppConfigManager.GetValue("AutoPlay", ConfigFileType.AppConfig));
            set.BorderMask = StringToBool(AppConfigManager.GetValue("BorderMask", ConfigFileType.AppConfig));
            set.CameraInertia = StringToBool(AppConfigManager.GetValue("CameraInertia", ConfigFileType.AppConfig));
            set.CameraPlayMode = StringToBool(AppConfigManager.GetValue("CameraPlayMode", ConfigFileType.AppConfig));
            set.GroundGrid = StringToBool(AppConfigManager.GetValue("GroundGrid", ConfigFileType.AppConfig));
            set.LoopPlay = StringToBool(AppConfigManager.GetValue("LoopPlay", ConfigFileType.AppConfig));
            set.NoHighlight = StringToBool(AppConfigManager.GetValue("NoHighlight", ConfigFileType.AppConfig));
            set.RemoveMeasurementCommands = StringToBool(AppConfigManager.GetValue("RemoveMeasurementCommands", ConfigFileType.AppConfig));
            set.RenderGroundShadow = StringToBool(AppConfigManager.GetValue("RenderGroundShadow", ConfigFileType.AppConfig));
            set.ShowAnnotationToolBar = StringToBool(AppConfigManager.GetValue("ShowAnnotationToolBar", ConfigFileType.AppConfig));
            set.ShowAssemblyTreeBar = StringToBool(AppConfigManager.GetValue("ShowAssemblyTreeBar", ConfigFileType.AppConfig));
            set.ShowBomTreeBar = StringToBool(AppConfigManager.GetValue("ShowBOMTreeBar", ConfigFileType.AppConfig));
            set.ShowCameraToolBar = StringToBool(AppConfigManager.GetValue("ShowCameraToolBar", ConfigFileType.AppConfig));
            set.ShowCameraViewToolBar = StringToBool(AppConfigManager.GetValue("ShowCameraViewToolBar", ConfigFileType.AppConfig));
            set.ShowCollabToolBar = StringToBool(AppConfigManager.GetValue("ShowCollabToolBar", ConfigFileType.AppConfig));
            set.ShowCollabTreeBar = StringToBool(AppConfigManager.GetValue("ShowCollabTreeBar", ConfigFileType.AppConfig));
            set.ShowCuttingPlaneToolBar = StringToBool(AppConfigManager.GetValue("ShowCuttingPlaneToolBar", ConfigFileType.AppConfig));
            set.ShowGeometryToolBar = StringToBool(AppConfigManager.GetValue("ShowGeometryToolBar", ConfigFileType.AppConfig));
            set.ShowMain3DToolBar = StringToBool(AppConfigManager.GetValue("ShowMain3DToolBar", ConfigFileType.AppConfig));
            set.ShowMarkerBar = StringToBool(AppConfigManager.GetValue("ShowMarkerBar", ConfigFileType.AppConfig));
            set.ShowMeasurementToolBar = StringToBool(AppConfigManager.GetValue("ShowMeasurementToolBar", ConfigFileType.AppConfig));
            set.ShowPaper = StringToBool(AppConfigManager.GetValue("ShowPaper", ConfigFileType.AppConfig));
            set.ShowPropertyBar = StringToBool(AppConfigManager.GetValue("ShowPropertyBar", ConfigFileType.AppConfig));
            set.ShowRedlineToolBar = StringToBool(AppConfigManager.GetValue("ShowRedlineToolBar", ConfigFileType.AppConfig));
            set.ShowRenderToolBar = StringToBool(AppConfigManager.GetValue("ShowRenderToolBar", ConfigFileType.AppConfig));
            set.ShowStandardToolBar = StringToBool(AppConfigManager.GetValue("ShowStandardToolBar", ConfigFileType.AppConfig));
            set.ShowStatusBar = StringToBool(AppConfigManager.GetValue("ShowStatusBar", ConfigFileType.AppConfig));
            set.ShowTimelineBar = StringToBool(AppConfigManager.GetValue("ShowTimelineBar", ConfigFileType.AppConfig));
            set.ShowTreesBar = StringToBool(AppConfigManager.GetValue("ShowTreesBar", ConfigFileType.AppConfig));
            set.ShowViewBar = StringToBool(AppConfigManager.GetValue("ShowViewBar", ConfigFileType.AppConfig));
            set.ShowVisibilityToolBar = StringToBool(AppConfigManager.GetValue("ShowVisibilityToolBar", ConfigFileType.AppConfig));
            set.UseGUID = StringToBool(AppConfigManager.GetValue("UseGUID", ConfigFileType.AppConfig));
           
            return set;
        }
    }
Composer 工具欄配置
 public class ComposerTreeView
    {
        //建立xml的路徑
        string xmlpath = AppDomain.CurrentDomain.BaseDirectory + "21.Xml";
        //判斷字元是否為中文
        static bool IsChinese(string CString)
        {
            return Regex.IsMatch(CString, @"^[\u4e00-\u9fa5]+$");
        }
        /// <summary>
        /// 創建頭結點和下一級節點
        /// </summary>
        /// <param name="player">控制項的名稱</param>
        /// <param name="treeview">TreeView的名字</param>
        public static void CreateFirstNode(AxDS3DVIAPlayerActiveXLib.AxDS3DVIAPlayerActiveX player,TreeView treeview)
        {
            var rnode = new TreeNode();
            string rootstr = player.GetAssyRoot();
            string[] RArray = rootstr.Split('"');
            foreach (var item in RArray)
            {
                if ( item.Length == 2 && IsChinese(item) )
                    {
                        TreeNode node = new TreeNode();
                        node.Text = item;
                        rnode.Nodes.Add(node);
                    }
            }
            treeview.Nodes.Add(rnode);
        }

        /// <summary>
        /// 建立xml信息
        /// </summary>
        /// <param name="xmlname">xml文件的名字</param>
        private void FillXml(string xmlname)
        {
            if (File.Exists(xmlpath))
            {
                File.Delete(xmlpath);
            }
            XElement root = XElement.Parse(xmlname);
            root.Save(xmlpath);
        }

        /// <summary>
        /// 將子節點添加到父節點
        /// </summary>
        /// <param name="tnode">子節點</param>
        /// <param name="parentnode">父節點</param>
        private void addTreeNode(TreeNode tnode, TreeNode parentnode)
        {
            parentnode.Nodes.Add(tnode);
        }

        List<TreeNode> nodelist = new List<TreeNode>();
        /// <summary>
        ///返回選中節點下的子節點名字集合 
        /// </summary>
        /// <param name="player">控制項的名字</param>
        /// <param name="treeview">TreeView的名字</param>
        /// <returns></returns>
        private List<TreeNode> createTreeNode(AxDS3DVIAPlayerActiveXLib.AxDS3DVIAPlayerActiveX player, TreeView treeview)
        {
            List<string> childlist = new List<string>();
            string childname = treeview.SelectedNode.Text;
            if (childname != null)
            {
                string childrenstr = player.GetAssyChild(CLitSelectionName(childname));
                FillXml(childrenstr);
                XDocument doc = XDocument.Load(xmlpath);
                var query = from fx in doc.Descendants("CLitModifiable")
                            select new
                            {
                                NodeName = fx.Attribute("Name").Value
                            };
                foreach (var item in query)
                {
                    TreeNode node1 = new TreeNode();
                    node1.Text = item.NodeName;
                    if (!nodelist.Contains(node1))
                    {
                        nodelist.Add(node1);
                    }
                }
            }
            return nodelist;
        }

        /// <summary>
        /// 準備好選擇對象的字元串
        /// </summary>
        /// <param name="name">指定對象的名字</param>
        /// <returns></returns>
        static string CLitSelectionName(string name)
        {
            return "<CLitSelection Name='' ><CLitModifiable  Name='" + name + "'/></CLitSelection>";
        }

        /// <summary>
        /// 根據點擊選擇的節點,查詢出其下麵的子節點信息
        /// </summary>
        /// <param name="player"></param>
        /// <param name="treeview"></param>
        public void TreeViewAfterSelect(AxDS3DVIAPlayerActiveXLib.AxDS3DVIAPlayerActiveX player, TreeView treeview)
        {
            nodelist.Clear();
            nodelist = createTreeNode(player, treeview);
            var parent = from fx in nodelist select fx;
            treeview.SelectedNode.Nodes.Clear();
            foreach (var item in parent)
            {
                TreeNode node = new TreeNode();
                node.Text = item.Text;
                if (!treeview.SelectedNode.Nodes.Contains(node))
                {
                    treeview.SelectedNode.Nodes.Add(node);
                }
            }
            treeview.ExpandAll();
        }
    }
自定義結構樹設置

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 系統:centos6.6 下載google身份驗證包google-authenticator-master(其實只是一個.zip文件,在windwos下解壓,然後傳進linux) #cd /data/google-authenticator-master/libpam #yum install li ...
  • 第五節 遠程SSH連接服務與基本排錯 標簽(空格分隔):Linux實戰教學筆記 陳思齊 第1章 遠程連接LInux系統管理 1.1 為什麼要遠程連接Linux系統 ![屏幕快照 2016 12 25 下午10.04.28.png 633.3kB][1] 在實際的工作場景中,虛擬機界面或物理伺服器本地 ...
  • 做了一單片機設計,要用C語言與彙編語言同時實現,現將這次設計的感受和收穫,還有遇到的問題寫下,歡迎感興趣的朋友交流想法,提出建議。 單片機設計:基於51單片機的99碼表設計 軟體環境:Proteus8.0 + Keil4 要求:1,開關按一下,數位管開始計時。2,按兩下,數位管顯示靜止。3,按三下, ...
  • rotatelogs 是 Apache 2.2 中自帶的管道日誌程式,參數如下(參見:http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/rotatelogs.html) 語法 rotatelogs [ l ] logfile [ rotation ...
  • 步驟:1. 掛在光碟 配置本地源; 2. 安裝redhat_lsb; 3. 安裝chrome 1 mount /dev/cdrom /mnt cd /etc/yum.repos.d/ vi local.repo (這裡要添加內容的: [local_cd] gpgcheck=0 enable=1 ba ...
  • 右擊開始->屬性->開始菜單->自定義>點擊運行命令(選擇)->確定 ...
  • Sciter中的Tiscript腳本不是標準的Javascript,是對Javascript的擴展。所以在常用的編輯器和IDE上對於高亮的支持很不好。 不過在Sciter論壇中找到了在VSCode上的高亮支持。安裝方法比較簡單。 首先點此下載插件。 之後在Sciter插件所在目錄執行 然後在VSCo ...
  • 最近修改的一個需求要求捕獲鍵盤輸入的 Text,包括各種標點符合。 最開始想到的是 PreviewKeyDown 或者 PreviewKeyUp 這樣的鍵盤事件。 但是這兩個事件的對象 KeyEventArgs 不夠用,得依靠判斷 Key 來判斷輸入了什麼,然後再根據判斷寫死一個相應鍵位的 Text ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...