基于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 == && 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();
}
}
自定义结构树设置


基于Composer Player 模型加载和相关属性设置的更多相关文章
- 【spring bean】spring中bean的懒加载和depends-on属性设置
项目结构如下: ResourceBean.java代码: package com.it.res; import java.io.File; import java.io.FileNotFoundExc ...
- 【Dojo 1.x】笔记7 配置对象dojoConfig的内容1:has属性、加载器的属性
说完了出身,即出身自dojo/_base/目录下的config模块,那就要好好讲讲这对象有什么可以写的属性了. 1. has属性 官方说是用于更好的特征检测的,具体有什么用现在还不得知. 例如: &l ...
- composer 实现自动加载原理
简介 一般在框架中都会用到composer工具,用它来管理依赖.其中composer有类的自动加载机制,可以加载composer下载的库中的所有的类文件.那么composer的自动加载机制是怎么实现的 ...
- DirectX11 With Windows SDK--19 模型加载:obj格式的读取及使用二进制文件提升读取效率
前言 一个模型通常是由三个部分组成:网格.纹理.材质.在一开始的时候,我们是通过Geometry类来生成简单几何体的网格.但现在我们需要寻找合适的方式去表述一个复杂的网格,而且包含网格的文件类型多种多 ...
- 深入解析 composer 的自动加载原理 (转)
深入解析 composer 的自动加载原理 转自:https://segmentfault.com/a/1190000014948542 前言 PHP 自5.3的版本之后,已经重焕新生,命名空间.性状 ...
- OpenGL OBJ模型加载.
在我们前面绘制一个屋,我们可以看到,需要每个立方体一个一个的自己来推并且还要处理位置信息.代码量大并且要时间.现在我们通过加载模型文件的方法来生成模型文件,比较流行的3D模型文件有OBJ,FBX,da ...
- Composer 的自动加载机制
Composer 的自动加载机制 Composer 提供了四种自动加载方式,分别是 PSR-0.PSR-4.生成 classmap 以及之间包含 files. PSR-0 方式 PSR-0 方式要求目 ...
- 详解composer的自动加载机制
composer是一个用PHP开发的用来管理项目依赖的工具,当你在项目中声明了依赖关系后,composer可以自动帮你下载和安装这些依赖库,并实现自动加载代码. 安装composer composer ...
- CC模型加载太慢?一招破解!
伴随无人机性能的提升,单个项目涉及到的倾斜摄影数据范围不断扩大,模型的数据量越来越大,在同配置机器上的显示速度也相应的越来越慢,那么如何在不升级配置的情况下提升模型的加载速度呢? 01 百GB倾斜摄影 ...
随机推荐
- Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境
一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...
- 【疯狂造轮子-iOS】JSON转Model系列之一
[疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...
- 06.SQLServer性能优化之---数据库级日记监控
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 之前说了一下数据库怎么发邮件:http://www.cnblogs.com/duniti ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)
系列目录 前言: WebAPI主要开放数据给手机APP,其他需要得知数据的系统,或者软件应用,所以移动端与系统的数据源往往是相通的. Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能, ...
- SQL Server-聚焦APPLY运算符(二十七)
前言 其实有些新的特性在SQL Server早就已经出现过,但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的,其实利用新的SQL Server语法会更加方便和简洁,从本节开始 ...
- potrace源码分析一
1 简介 potrace是由Dalhousie University的Peter Selinger开发一款位图轮廓矢量化软件,该软件源码是可以公开下载的,详细见项目主页:http://potrace. ...
- 你所能用到的BMP格式介绍
原理篇: 一.编码的意义. 让我们从一个简单的问题开始,-2&-255(中间的操作符表示and的意思)的结果是多少,这个很简单的问题,但是能够写出解答过程的人并不 多.这个看起来和图片格式没有 ...
- React Native Android gradle下载慢问题解决
很多人会遇到 初次运行 react-native run android的时候 gradle下载极慢,甚至会失败的问题 如下图 实际上这个问题好解决的 首先 把对应版本的gradle下载到本地任意一个 ...
- Linux学习笔记(一):常用命令
经过统计Linux中能够识别的命令超过3000种,当然常用的命令就远远没有这么多了,按照我的习惯,我把已经学过的Linux常用命令做了以下几个方面的分割: 1.文件处理命令 2.文件搜索命令 3.帮助 ...
- 1 selenium3.0.1无法打开火狐浏览器
[问题描述] 1.配置selenium3.0和java后,尝试打开火狐浏览器,提示缺少geckodriver驱动. [解决方案] 1.在http://www.seleniumhq.org/downlo ...