注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

NXOpen 绘制草图  

2013-12-21 21:25:24|  分类: UG NX |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

测试了书中的一段代码,用C#实现,测试了一下,效果还行,虽然许多东西都不是太清楚,但是大致有了一个感性的认识。

using System;
using NXOpen;
using NXOpen.Features;
using NXOpen.GeometricUtilities;
namespace NXTest
{
   public class Class1
   {
       public static void Main()
       {
           double D = 120;
           double d = 50;
           double R = 100;
           double r = 50;
           double L = 140;
           double phi = Math.Acos((R - r) / L);

           Session nxSession = Session.GetSession();
           Part workPart = nxSession.Parts.Work;
           SketchInPlaceBuilder sib = workPart.Sketches.CreateSketchInPlaceBuilder(null);
           Sketch sk=sib.Commit() as Sketch;
           sk.Activate(Sketch.ViewReorient.False);
           sib.Destroy();
           NXMatrix mx = nxSession.ActiveSketch.Orientation;
           //circles
           //center circle
           Arc cc = workPart.Curves.CreateArc(new Point3d(0, 0, 0), mx, D / 2, 0, 2 * Math.PI);
           nxSession.ActiveSketch.AddGeometry(cc, Sketch.InferConstraintsOption.InferNoConstraints);
           //left circle
           Arc cl = workPart.Curves.CreateArc(new Point3d(-L, 0, 0), mx, d / 2, 0, 2 * Math.PI);
           nxSession.ActiveSketch.AddGeometry(cl, Sketch.InferConstraintsOption.InferNoConstraints);
           //right circle
           Arc cr = workPart.Curves.CreateArc(new Point3d(L, 0, 0), mx, d / 2, 0, 2 * Math.PI);
           nxSession.ActiveSketch.AddGeometry(cr, Sketch.InferConstraintsOption.InferNoConstraints);
           
           //lines
           double x1=R*(R-r)/L;
           double y1=R*Math.Sin(phi);
           double x2=L+r*(R-r)/L;
           double y2=r*Math.Sin(phi);
           Point3d sp=new Point3d(x1,y1,0);
           Point3d ep=new Point3d(x2,y2,0);
           Line l1 = workPart.Curves.CreateLine(sp, ep);
           nxSession.ActiveSketch.AddGeometry(l1, Sketch.InferConstraintsOption.InferNoConstraints);
           sp.Y = -sp.Y;
           ep.Y = -ep.Y;
           Line l2 = workPart.Curves.CreateLine(sp, ep);
           nxSession.ActiveSketch.AddGeometry(l2, Sketch.InferConstraintsOption.InferNoConstraints);
           sp.X = -sp.X;
           ep.X = -ep.X;
           Line l3 = workPart.Curves.CreateLine(sp, ep);
           nxSession.ActiveSketch.AddGeometry(l3, Sketch.InferConstraintsOption.InferNoConstraints);
           sp.Y = -sp.Y;
           ep.Y = -ep.Y;
           Line l4 = workPart.Curves.CreateLine(sp, ep);
           nxSession.ActiveSketch.AddGeometry(l4, Sketch.InferConstraintsOption.InferNoConstraints);

           //arcs
           Arc ac1 = workPart.Curves.CreateArc(new Point3d(L, 0, 0), mx, r, -phi, phi);
           nxSession.ActiveSketch.AddGeometry(ac1, Sketch.InferConstraintsOption.InferCoincidentConstraints);
           Arc ac2 = workPart.Curves.CreateArc(new Point3d(-L, 0, 0), mx, r, Math.PI - phi, Math.PI + phi);
           nxSession.ActiveSketch.AddGeometry(ac2, Sketch.InferConstraintsOption.InferCoincidentConstraints);
           Arc ac3 = workPart.Curves.CreateArc(new Point3d(0, 0, 0), mx, R, phi, Math.PI - phi);
           nxSession.ActiveSketch.AddGeometry(ac3, Sketch.InferConstraintsOption.InferCoincidentConstraints);
           Arc ac4 = workPart.Curves.CreateArc(new Point3d(0, 0, 0), mx, R, Math.PI + phi, 2 * Math.PI - phi);
           nxSession.ActiveSketch.AddGeometry(ac4, Sketch.InferConstraintsOption.InferCoincidentConstraints);
           //更新,并退出草图
           nxSession.ActiveSketch.Update();
           nxSession.ActiveSketch.Deactivate(Sketch.ViewReorient.False, Sketch.UpdateLevel.SketchOnly);                      
           workPart.ModelingViews.WorkView.Fit();
       }
   }
}

一个很简单的图形:

NXOpen 绘制草图 - Lemniscate - 信息,灵感,创新

计算、编写代码大概花了我半个小时的时间,太慢了。

然后图形中的约束吧,直线和圆弧的相切关系不能自动添加,但是同心圆的约束能够自动添加,不太清楚其内部实现机理。 

  评论这张
 
阅读(763)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016