基于Composer Player 模型加载和相关属性设置

主要是基于达索软件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();
        }
    }

自定义结构树设置

时间: 2024-08-08 21:52:34

基于Composer Player 模型加载和相关属性设置的相关文章

OpenGL学习脚印:模型加载初步-加载obj模型(load obj model)

写在前面 前面介绍了光照基础内容,以及材质和lighting maps,和光源类型,我们对使用光照增强场景真实感有了一定了解.但是到目前为止,我们通过在程序中指定的立方体数据,绘制立方体,看起来还是很乏味.本节开始介绍模型加载,通过加载丰富的模型,能够丰富我们的场景,变得好玩.本节的示例代码均可以在我的github下载. 加载模型可以使用比较好的库,例如obj模型加载的库,Assimp加载库.本节作为入门篇,我们一开始不使用这些库加载很酷的模型,而是熟悉下模型以及模型加载的概念,然后我们封装一个

使用Android新式LruCache缓存图片,基于线程池异步加载图片

import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import a

深入解析 composer 的自动加载原理 (转)

深入解析 composer 的自动加载原理 转自:https://segmentfault.com/a/1190000014948542 前言 PHP 自5.3的版本之后,已经重焕新生,命名空间.性状(trait).闭包.接口.PSR 规范.以及 composer 的出现已经让 PHP 变成了一门现代化的脚本语言.PHP 的生态系统也一直在演进,而 composer 的出现更是彻底的改变了以往构建 PHP 应用的方式,我们可以根据 PHP 的应用需求混合搭配最合适的 PHP 组件.当然这也得益于

Composer 的自动加载机制

Composer 的自动加载机制 Composer 提供了四种自动加载方式,分别是 PSR-0.PSR-4.生成 classmap 以及之间包含 files. PSR-0 方式 PSR-0 方式要求目录名和命名空间层层对应,这样导致目录结构会很深,现在已经被官方废弃了. 但是,因为现在的主流 PHP 框架都已经实现了 PSR-0 方式,所以 Composer 仍然向下兼容.按照 PSR-0 的规则,当加载 User\Info 这个类的时候,那么会去寻找 src/User/Info.php,最后这

DirectX的OBJ模型加载与渲染

在之前的DirectX例子里我用的模型是.x文件,DirectX有一个方法D3DXLoadMeshFromX可以加载.x模型,但是这里有个问题,.x文件是没法用文本编辑器打开查看结构的,这里我来演示一下如何解析.obj模型. 首先让我们看一下.obj模型的组成部分以及结构,一个完整的obj模型一共分为三个部分:obj模型文件,mtl材质文件,纹理贴图;其中obj文件和mtl文件是可以用文本编辑器打开的,先打开obj文件,可以看到这样的内容: v -3.000767 2.993211 2.0142

基于jQuery点击加载动画按钮特效

分享一款基于jQuery点击加载动画按钮特效.这是一款基于jQuery+CSS3实现的鼠标点击按钮加载动画特效代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="container"> <div class="row"> <div class="col-md-6 col-md-offset-3 text-center"> <p> <button c

cocos2d-x模型加载的重构,我眼中的面向对象

这两天在写cocos2d-x加载ogre的mesh模型的东西,完成了一半了,还差动画文件没接进来.这篇文章并不是教如何加载模型文件的,因为那种东西没什么可教的,无非就是加载文件,然后解析出自己想要的顶点.关键帧等数据,最后给coco2d-x中的MeshData赋好值.这里我想表达一些我有关代码格式.代码设计.代码重构的想法,我会分一些有关或者无关的问题,来逐一分析. 一.为什么要支持多种模型格式?cocos2d-x自己定义一种新的格式c3d.c3t这样好不好? 首先,我认为,一个成熟的游戏引擎不

使用PSR-4配合composer autoload 自动加载文件夹

require 文件很麻烦,使用PSR-4搭配composer一次加载,终生受用. 感觉类似java中的import了,自己先记录一下最近理解的. 用composer管理自己的包吧 安装composer 这个不多赘述 英文版教程 中文版教程 PSR-4规范 PSR-4-autoloader 构建项目目录 |-project ? |-src ? |-View.php ? |-app ? |-Tools.php |-composer.json 上面路径的View.php在project/src/Vi

模型保存和模型加载

模型保存和模型加载 原文地址:https://www.cnblogs.com/cititude/p/11618691.html