void addPoint(List<float> buffer, Vector3 pt)
{
buffer.Add((float)pt.X);
buffer.Add((float)pt.Y);
buffer.Add((float)pt.Z);
} void ComputeMinMax(Vector3 a, Vector3 b, Vector3 c, Vector3 minPt, Vector3 maxPt)
{
minPt.X = Math.Min(Math.Min(a.X, b.X), c.X);
minPt.Y = Math.Min(Math.Min(a.Y, b.Y), c.Y);
minPt.Z = Math.Min(Math.Min(a.Z, b.Z), c.Z); maxPt.X = Math.Max(Math.Max(a.X, b.X), c.X);
maxPt.Y = Math.Max(Math.Max(a.Y, b.Y), c.Y);
maxPt.Z = Math.Max(Math.Max(a.Z, b.Z), c.Z);
} private void faceToolStripMenuItem1_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "TEXT (*.txt)|*.txt|All Files(*.*)|*.*";
if (DialogResult.OK != dlg.ShowDialog())
return;
String vertexFileName = dlg.FileName;
if (DialogResult.OK != dlg.ShowDialog())
return;
String faceFileName = dlg.FileName; List<Vector3> points = new List<Vector3>();
StreamReader sr = new StreamReader(vertexFileName, Encoding.Default);
String line;
while ((line = sr.ReadLine()) != null)
{
String[] items = line.Split('\t');
if (items.Length == 3)
{
Vector3 pt = new Vector3();
pt.X = float.Parse(items[0]);
pt.Y = float.Parse(items[1]);
pt.Z = float.Parse(items[2]); points.Add(pt);
}
} List<uint> faces = new List<uint>();
faces.Add(0);
faces.Add(1);
faces.Add(2); Random num = new Random();
List<FaceStyle> faceStyles = new List<FaceStyle>();
FaceStyle fs1 = new FaceStyle();
fs1.SetColor(num.Next(0, 255), num.Next(0, 255), num.Next(0, 255));
faceStyles.Add(fs1);
FaceStyle fs2 = new FaceStyle();
fs2.SetColor(num.Next(0, 255), num.Next(0, 255), num.Next(0, 255));
faceStyles.Add(fs2);
FaceStyle fs3 = new FaceStyle();
fs3.SetColor(num.Next(0, 255), num.Next(0, 255), num.Next(0, 255));
faceStyles.Add(fs3);
FaceStyle fs4 = new FaceStyle();
fs4.SetColor(num.Next(0, 255), num.Next(0, 255), num.Next(0, 255));
faceStyles.Add(fs4);
FaceStyle fs5 = new FaceStyle();
fs5.SetColor(num.Next(0, 255), num.Next(0, 255), num.Next(0, 255));
faceStyles.Add(fs5);
FaceStyle fs6 = new FaceStyle();
fs6.SetColor(num.Next(0, 255), num.Next(0, 255), num.Next(0, 255));
faceStyles.Add(fs6); ElementId id = new ElementId();
sr = new StreamReader(faceFileName, Encoding.Default);
while ((line = sr.ReadLine()) != null)
{
String[] items = line.Split('\t');
if (items.Length == 3)
{
int a = int.Parse(items[0]) - 1;
int b = int.Parse(items[1]) - 1;
int c = int.Parse(items[2]) - 1; List<float> positions = new List<float>();
addPoint(positions, points[a]);
addPoint(positions, points[b]);
addPoint(positions, points[c]); Vector3 normal = (points[b] - points[a]).CrossProduct(points[c] - points[a]);
normal.Normalize(); List<float> normals = new List<float>();
addPoint(normals, normal);
addPoint(normals, normal);
addPoint(normals, normal); AABox bbox = new AABox();
ComputeMinMax(points[a], points[b], points[c], bbox.MinPt, bbox.MaxPt);
var entity = GlobalInstance.TopoShapeConvert.CreateFaceEntity(positions.ToArray(), faces.ToArray(), normals.ToArray(), null, bbox); EntitySceneNode node = new EntitySceneNode();
node.SetEntity(entity);
node.SetId(++id);
node.SetFaceStyle(faceStyles[num.Next(0, 5)]); renderView.ShowSceneNode(node);
}
}
}

  

AnyCAD在医疗中的应用的更多相关文章

  1. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

  2. 3D模型文件读写.Net SDK

    AnyCAD .Net/C++ SDK支持多种3D/2D文件格式,比如BREP.STEP.IGES.STL.DXF.3DS.OBJ.FBX.SKP.IFC.DAE……等,根据使用场景提供不同的API. ...

  3. 不平衡数据下的机器学习方法简介 imbalanced time series classification

    imbalanced time series classification http://www.vipzhuanli.com/pat/books/201510229367.5/2.html?page ...

  4. ADC应用

    数模转换(ADC)的应用笔记 智能时代,数字信号已体现在我们生活的方方面面,A/D,D/A是重要的基础.智能手机触摸信号需要转换为数字信号才能分辨触摸位置.数字去抖:打电话或者麦克风需要将模拟声信号转 ...

  5. (zhuan) Some Talks about Dual Learning

    研究|对偶学习:一种新的机器学习范式  this blog copy from: http://www.msra.cn/zh-cn/news/blogs/2016/12/dual-learning-2 ...

  6. OHEM

    样本不平衡问题 如在二分类中正负样本比例存在较大差距,导致模型的预测偏向某一类别.如果正样本占据1%,而负样本占据99%,那么模型只需要对所有样本输出预测为负样本,那么模型轻松可以达到99%的正确率. ...

  7. [网摘][医学影像] DICOM 和 NIFTI 基础知识与区别

    查找DICOM基础知识时,看到这篇文章里面写了一些关于使用深度学习进行医疗影像分析:文件格式篇.下文摘自:https://www.jiqizhixin.com/articles/2017-07-31 ...

  8. WCF知识点(应用WCF支持原生Socket访问, 原始字节流传输)

    最近在做区域医疗中PIX时, 需要让PIX Manager同时支持HL7的V2和V3版本.思路是利用WCF来同时支持V2版本的c/s架构式的消息协议和V3版本WebService的Soap协议.  实 ...

  9. AI资源对接需求汇总:第3期

    更好的阅读体验,请查看首发原文链接:AI资源对接需求汇总:第3期 平台介绍 平台由人工智能领域几个知名原创公众号发起,总读者约25万. 主要面向人工智能领域的从业者,涵盖图像处理.三维计算机视觉.机器 ...

随机推荐

  1. 查看Linux、Tomcat、JAVA版本信息

    查看Linux.Tomcat.JAVA版本信息 [root@test1 bin]# cd /usr/local/tomcat/tomcat_jdt/bin/ [root@test1 bin]# sh ...

  2. [poj3259]Wormholes(spfa判负环)

    题意:有向图判负环. 解题关键:spfa算法+hash判负圈. spfa判断负环:若一个点入队次数大于节点数,则存在负环.  两点间如果有最短路,那么每个结点最多经过一次,这条路不超过$n-1$条边. ...

  3. [Gym 101334E]Exploring Pyramids(区间dp)

    题意:给定一个先序遍历序列,问符合条件的树的种类数 解题关键:枚举分割点进行dp,若符合条件一定为回文序列,可分治做,采用记忆化搜索的方法. 转移方程:$dp[i][j] = \sum {dp[i + ...

  4. Java 常见注解

    @Retention 1.RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略2.RetentionPolicy.CLASS —— ...

  5. JSP相关背景

    -----------------siwuxie095                             Sun Microsystems             SUN 即 Stanford ...

  6. Entity Framework Code-First(9.4):DataAnnotations - Required Attribute

    Required attribute can be applied to a property of a domain class. EF Code-First will create a NOT N ...

  7. 关于PHP在企业级开发领域的访谈——企业级开发,PHP准备好了吗?

    关于PHP在企业级开发领域的访谈 ——企业级开发,PHP准备好了吗? 转自:http://www.nowamagic.net/librarys/veda/detail/256 虽然PHP是Web应用开 ...

  8. NPOI导出EXCEL部分样式不起作用

    在使用NPOI导出excel的时候,设置cell样式,数据量多余6条之后,在后面几条数据没有样式(边框,对其,换行等). 原因是设置CellStyle的时候把CreateCellStyle放在循环列集 ...

  9. foreach 加 &

  10. tput 命令行使用说明

    转载自:https://blog.csdn.net/fdipzone/article/details/9993961 什么是 tput?tput 命令将通过 terminfo 数据库对您的终端会话进行 ...