NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9874|回复: 12
打印 上一主题 下一主题

[个人作品] 工字钢纠结死了

  [复制链接]
跳转到指定楼层
1m
发表于 2012-12-10 02:10:04 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 panhao1 于 2012-12-10 02:11 编辑

Mesh mesh = new Mesh();
    x.FaceNormals.ComputeFaceNormals();
    List<Curve> ls = new List<Curve>();
    Rhino.Geometry.Collections.MeshTopologyEdgeList el = x.TopologyEdges;
    for(int i = 0;i < el.Count;i++){
      Line L = el.EdgeLine(i);
      if (el.GetConnectedFaces(i).Length == 1) ls.Add(L.ToNurbsCurve());
    }
    Curve[] cs = Rhino.Geometry.Curve.JoinCurves(ls, doc.ModelAbsoluteTolerance * 10);
    Vector3d v = new Vector3d(x.FaceNormals[0]);
    v.Unitize();v /= 2;
    PolylineCurve pl = cs[0].ToPolyline(0, 0, Math.PI, 99999, 0, 0, 0.1, 0, true);

    for(int i = 0;i < pl.PointCount;i++){
      mesh.Vertices.Add(pl.Point(i) + v);
      mesh.Vertices.Add(pl.Point(i) - v);

      if(i < pl.PointCount - 1)   mesh.Faces.AddFace(new MeshFace(i * 2, i * 2 + 1, i * 2 + 3, i * 2 + 2));
    }
    mesh.Faces.AddFace(new MeshFace(cs.Length * 2 - 2, cs.Length * 2 - 1, 1, 0));
    mesh.Compact();
    mesh.Normals.ComputeNormals();

    A = mesh;
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
 楼主| 发表于 2012-12-10 02:12:10 | 显示全部楼层
本帖最后由 panhao1 于 2012-12-10 02:46 编辑

有人说可以用tryGetPolyline()
元芳你怎么看~

3m
 楼主| 发表于 2012-12-11 15:03:05 | 显示全部楼层

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-5-2 09:03 , Processed in 0.317608 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表