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. GIF助手帮助说明

    生成的文件位置? 生成的GIF等文件存储在 /sdcard/gifdir/ 目录下. 为什么分享到微信.Twitter等平台失败? 微信.Twitter等平台对GIF文件大小有限制,微信限制为1MB, ...

  2. 伪分布模式 hive查询

    [root@node1 ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian ...

  3. 关于request的几个字段值

    domain: localhost host: localhost:9000 url: /wechat/mynews action: WechatController.myNews path: /we ...

  4. ssh的两种连接方法(包括无密码访问)

    一.正常连接方法:ssh root@10.0.0.20 二.无密码连接方法(有两台机器:此处我把被连接的称为服务器,另一台则称为客户端): 1.先在服务器添加目录 .ssh: mkdir  .ssh ...

  5. 第3章 机器学习的典型应用 3-4 典型应用-ctr预估和协同过滤

    ctr预估,用户点击率的预估.这个算法的名字叫ctr预估,但是它背后算法是线性的逻辑回归. 现在的推荐系统除了可能会用关联规则之外,现在还有一些所谓的更新的协同过滤的算法.

  6. 详解 javascript中offsetleft属性的用法(转)

    详解 javascript中offsetleft属性的用法 转载  2015-11-11   投稿:mrr    我要评论 本章节通过代码实例介绍一下offsetleft属性的用法,需要的朋友可以做一 ...

  7. assert.fail()

    assert.fail(message) assert.fail(actual, expected[, message[, operator[, stackStartFunction]]]) oper ...

  8. Angular09 数据绑定、响应式编程、管道

    1 数据绑定的分类 1.1 单向数据绑定 1.1.1 属性绑定 -> 数据从组件控制类到组件模板 DOM属性绑定 HTML属性绑定 1.1.2 事件绑定 -> 数据从组件模板到组件控制类 ...

  9. linux切割文件【split命令详解】

    linux查看帮助 [tomcat-nohup]$ split --help 用法:split [选项]... [输入 [前缀]] 将输入内容拆分为固定大小的分片并输出到"前缀aa" ...

  10. 27、BLASTN的参数

    转载:http://blog.sina.com.cn/s/blog_5ecfd9d90100ksui.html http://www.docin.com/p-704735699.html 与之前的bl ...