当前位置: 首页 > news >正文

井陉矿区网站建设网推怎么做

井陉矿区网站建设,网推怎么做,太原网站建设哪家最好,自用电脑做网站我们在UG装配的过程中,经常会遇到需要调整组件目录位置,在软件设计过程中可以通过在目录树里面拖动组件来完成。 那么,如果要用程序实现组件的移动/拖动,我们要怎么做呢? 本节就完成了添加/拖动/删除组件方法的实现&…

我们在UG装配的过程中,经常会遇到需要调整组件目录位置,在软件设计过程中可以通过在目录树里面拖动组件来完成。

那么,如果要用程序实现组件的移动/拖动,我们要怎么做呢?

本节就完成了添加/拖动/删除组件方法的实现,先看效果图:

根节点test下,有SHCS_01、SHCS_02、SHCS_03、SHCS_04这四个组件。

下面分别给出了添加组件、移动组件和删除组件的方法。

一、添加组件

1、实现方法

/// <summary>
/// 添加组件
/// </summary>
/// <param name="templatePrt">模板路径</param>
/// <param name="basePoint">中心点坐标位置</param>
/// <param name="orientation">矢量方向</param>
/// <param name="expModel">表达式集</param>
public static void AddComponent(string templatePrt, Point3d basePoint, Matrix3x3 orientation, ExpressionModel expModel)
{theUFSession = UFSession.GetUFSession();theSession = Session.GetSession();displayPart = theSession.Parts.Display;workPart = theSession.Parts.Work;componentNameList = new List<string>();BasePart basePart1;PartLoadStatus partLoadStatus1;step1:string fileName = "";string newfile = GetNewFile(templatePrt, out fileName); //先拷贝一个备份try{basePart1 = theSession.Parts.OpenBase(newfile, out partLoadStatus1);}catch (Exception){componentNameList.Add(fileName);goto step1;}partLoadStatus1.Dispose();#region 修正表达式ExpressionCollection expressionCollection = basePart1.Expressions;EventHelper.UpdateExpression(expressionCollection, expModel);#endregion#region 添加属性basePart1.SetAttribute("模具编号", "", Update.Option.Now);basePart1.SetAttribute("材料标准", "", Update.Option.Now);basePart1.SetAttribute("塑胶材料", "", Update.Option.Now);basePart1.SetAttribute("缩水率", "", Update.Option.Now);basePart1.SetAttribute("穴数", "", Update.Option.Now);basePart1.SetAttribute("客户", "", Update.Option.Now);basePart1.SetAttribute("项目编号", "", Update.Option.Now);basePart1.SetAttribute("产品名称", "", Update.Option.Now);basePart1.SetAttribute("产品编号", "", Update.Option.Now);basePart1.SetAttribute("设计", "", Update.Option.Now);#endregionPartLoadStatus partLoadStatus3;NXOpen.Assemblies.Component component1;component1 = workPart.ComponentAssembly.AddComponent(newfile, "model", fileName, basePoint, orientation, -1, out partLoadStatus3, true);
}public static string GetNewFile(string fullFileName, out string fileName)
{fileName = "";string newFullFileName = "";displayPart = theSession.Parts.Display;FileInfo file = new FileInfo(fullFileName);List<Component> allComponents = new List<Component>();List<ComponentModel> componentList = new List<ComponentModel>();Component root = displayPart.ComponentAssembly.RootComponent;if (root != null){GetAllComponents(displayPart.ComponentAssembly.RootComponent, allComponents, componentList);}foreach (ComponentModel model in componentList){if (!componentNameList.Contains(model.instanceName)){componentNameList.Add(model.instanceName.ToLower());}}for (int i = 1; i < 100; i++){newFullFileName = AppDomain.CurrentDomain.BaseDirectory.ToString() + "temp\\" + GetCompantName(fullFileName) + "_0" + i.ToString() + ".prt";fileName = GetCompantName(fullFileName) + "_0" + i.ToString();FileInfo fi = new FileInfo(newFullFileName);if (!fi.Exists){file.CopyTo(newFullFileName);}if (componentNameList.Contains(fileName.ToLower())){continue;}else{break;}}return newFullFileName;
}/// <summary>
/// 修正表达式,自动完全匹配
/// </summary>
/// <param name="expCol"></param>
/// <param name="expModel"></param>
public static void UpdateExpression(ExpressionCollection expCol, ExpressionModel expModel)
{Expression[] expressions = expCol.ToArray();foreach (var ex in expressions){foreach (PropertyInfo pi in expModel.GetType().GetProperties()){double value = 0.0;var name = pi.Name;string strVal = pi.GetValue(expModel, null).ToString();if (!string.IsNullOrEmpty(strVal)){value = double.Parse(strVal);}if (ex.Name == name){ex.Value = value == 0.0 ? ex.Value : value;}}}
}

添加组件,主要使用了workPart.ComponentAssembly.AddComponent方法来实现,需要注意的是:

1、为了实现零件的重复添加,需要在添加组件的方法里做特殊处理,复制多个模板临时文件并实现文件名的递增命名

2、修正表达式是添加组件的一个重要方法,可以通过表达式的修正实现标准件的配置化

3、添加属性,是为了方便组件管理,为后期出图做铺垫 

二、移动/拖动组件

1、实现方法

/// <summary>
/// 移动组件
/// </summary>
/// <param name="origName">待移动组件名</param>
/// <param name="newParentName">父组件名</param>
public static void MoveCompant(string origName, string newParentName)
{Session theSession = Session.GetSession();Part workPart = theSession.Parts.Work;Component origComponent = GetComponentByDisplayName(origName);Component newParentComponent = GetComponentByDisplayName(newParentName);Part part1 = (Part)theSession.Parts.FindObject(newParentComponent.DisplayName);NXOpen.Assemblies.Component[] origComponents1 = new NXOpen.Assemblies.Component[1];NXOpen.Assemblies.Component component1 = origComponent;origComponents1[0] = component1;NXOpen.Assemblies.Component component2 = newParentComponent;NXOpen.Assemblies.Component[] newComponents1;ErrorList errorList1;part1.ComponentAssembly.RestructureComponents(origComponents1, component2, true, out newComponents1, out errorList1);errorList1.Dispose();
}public static Component GetComponentByDisplayName(string displayName)
{List<Component> compList = new List<Component>();List<Body> bodyList = new List<Body>();GetBodyListFromComponet(ref compList, ref bodyList);foreach (Component comp in compList){if (comp.DisplayName == displayName)return comp;}return null;
}/// <summary>
/// 通过ufun获取组件里的部件信息
/// </summary>
public static void GetBodyListFromComponet(ref List<Component> compList, ref List<Body> bodyList)
{theSession = Session.GetSession();theUFSession = UFSession.GetUFSession();workPart = theSession.Parts.Work;compList = new List<Component>();bodyList = new List<Body>();GetComponentList(workPart, compList);ComponentAssembly compAssembly = workPart.ComponentAssembly;Component rootComponent = compAssembly.RootComponent;foreach (Component c in compList){SetWorkPart(c);workPart = theSession.Parts.Work;Tag objTag = Tag.Null;theUFSession.Obj.CycleObjsInPart(workPart.Tag, UFConstants.UF_solid_type, ref objTag);while (objTag != Tag.Null){int type, subtype;theUFSession.Obj.AskTypeAndSubtype(objTag, out type, out subtype);if (type == 70 && subtype == 0){Body b = (Body)NXOpen.Utilities.NXObjectManager.Get(objTag);bodyList.Add(b);}theUFSession.Obj.CycleObjsInPart(workPart.Tag, UFConstants.UF_solid_type, ref objTag);}}SetWorkPart(rootComponent);
}

通过NXopen的方法part1.ComponentAssembly.RestructureComponents来实现组件移动拖动:

想要移动组件,先要弄清楚移动哪个组件到哪个位置,所以移动组件的在于待移动组件和移动到的父组件的识别

由于装配是一个临时的过程,所以在组件处理的时候我们不能像处理部件那样,组件的每次操作都会引起组件tag的变化。

所以这里,我们移动组件的参数用的是:待移动组件名和父组件名。

通过封装方法GetComponentByDisplayName,我们可以识别到需要的组件。

三、删除组件

 1、实现方法

/// <summary>
/// 删除组件
/// </summary>
/// <param name="displayName">待删除组件名称</param>
public static void RemoveComponent(string displayName)
{Session theSession = Session.GetSession();Component component = GetComponentByDisplayName(displayName);NXOpen.Session.UndoMarkId markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Delete");;NXObject[] objects1 = new NXObject[1];objects1[0] = component;theSession.UpdateManager.AddToDeleteList(objects1);bool notifyOnDelete2 = theSession.Preferences.Modeling.NotifyOnDelete;int nErrs2 = theSession.UpdateManager.DoUpdate(markId2);
}

删除组件比较简单,是通过NXopen的theSession.UpdateManager对象来实现的,具体操作分一下几步:

1、theSession 的初始化:Session theSession = Session.GetSession()

2、添加删除列表:theSession.UpdateManager.AddToDeleteList(objects1)

3、提交删除:theSession.UpdateManager.DoUpdate(markId2)

http://www.zhongyajixie.com/news/24977.html

相关文章:

  • 购物网站制作实例深圳平台推广
  • java网站开发优缺点网络推广包括哪些
  • iis打开网站变成下载域名注册需要多久
  • 系统开发与网站开发网页制作的步骤
  • PHP网站开发涉及的工具有哪些网站备案查询官网
  • 腾讯云 建网站seo刷关键词排名优化
  • 家居公司网站建设方案ppt西安高端模板建站
  • 怎么制作页面长沙seo优化公司
  • 厦门的网站建设公司亿驱动力竞价托管
  • 网站运营的思路图片搜索
  • 手机上如何建立wordpressseol英文啥意思
  • 全屏网站制作注册域名的步骤
  • 做微信网站怎么推广一个平台
  • 自己电脑做网站还用备案现在百度推广有用吗
  • 企业新品做众筹的美国网站手机制作网站app
  • 手机网站建好怎么发布培训如何优化网站
  • 杭州网站建设哪里好百度助手app下载
  • 创建平台网站下载软件seo外链自动群发工具
  • 西电信息化建设网站万能识图
  • 好用的crm系统有哪些南京搜索引擎推广优化
  • seo做的不好的网站有哪些今日头条新闻消息
  • 网页网站动作效果做的比较棒seo技术助理
  • 桦甸市城乡建设局网站搜索引擎优化原理
  • 个人网站做贷款广告信阳百度推广公司电话
  • wordpress 自定义首页seo用什么论坛引流
  • 天津网站建设zhy88网络营销模式有哪些?
  • php网站如何做特效360优化大师旧版
  • 鞍山网站制作一般多少钱seo网站优化培
  • 大数据做网站网络科技公司
  • 采购找供应商网站南宁百度seo排名