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. jQuery 文档操作 - html() 方法

    1.转自:http://www.w3school.com.cn/jquery/manipulation_html.asp 设置所有 p 元素的内容: <html> <head> ...

  2. <正则吃饺子> :关于gson使用的一点总结

    一.场景 在群里看到的信息:在使用 gson时候,报了个错 :java.lang.IllegalArgumentException:   declares multiple JSON fields n ...

  3. BO 与 VO 的属性拷贝 copyProperties(bo,vo)

    NewClass extends OldClass   : newClass继承自oldClass,属性大多数相同,但是也有新的扩展. beanUtils.copyProperties(oldClas ...

  4. 关于android的一些博文收集

    Java网络编程总结 http://www.cnblogs.com/oubo/archive/2012/01/16/2394641.html Android应用系列:双击返回键退出程序 http:// ...

  5. 使用showOptionDialog显示多项选择框

    -----------------siwuxie095                             工程名:TestJOptionPane 包名:com.siwuxie095.showdi ...

  6. c# 创建缩略图

    /// <summary> /// 创建缩略图 /// </summary> /// <param name="srcFileName">< ...

  7. pig 入门教程(1)

    出处:http://www.codelast.com/ 本文可以让刚接触pig的人对一些基础概念有个初步的了解. 本文大概是互联网上第一篇公开发表的且涵盖大量实际例子的Apache Pig中文教程(由 ...

  8. python实现DNA序列字符串转换,互补链,反向链,反向互补链

    在生物信息学分析中,经常对DNA序列进行一系列操作,包括子序列截取,互补序列获取,反向序列获取,反向互补序列获取.在python语言中,可编写如下函数完成这些简单功能. 子序列截取 python中对序 ...

  9. 解决spring mybatis 整合后mapper接口注入失败

    spring整合mybatis,在dao层我们只写一个接口,配置相应的*mapper.xml文件, 报如下错误: org.springframework.beans.factory.Unsatisfi ...

  10. Redis源码分析-底层数据结构盘点

    前段时间翻看了Redis的源代码(C语言版本,Git地址:https://github.com/antirez/redis), 过了一遍Redis数据结构,包括SDS.ADList.dict.ints ...