/// <summary> /// 编辑零部件,自动区分装配体还是零件 /// </summary> /// <param name="comp">组件</param> /// <param name="doc">顶级文档</param> /// <param name="silent">静默编辑--提高速度</param> /// <param name="readOnly">只读</param> /// <returns></returns> public static swEditPartCommandStatus_e Edit(this Component2 comp, AssemblyDoc doc, bool silent = true, bool readOnly = false) { var type = comp.GetCompType(); int info = -1; switch (type) { case swDocTemplateTypes_e.swDocTemplateTypePART: if (comp.Select2(false, -1)) { doc.EditPart2(silent, readOnly, ref info); } break; case swDocTemplateTypes_e.swDocTemplateTypeASSEMBLY: if (comp.Select2(false, -1)) { doc.EditAssembly(); } info = 0; break; default: throw new FileFormatException(string.Format("不能编辑此类型的组件:{0} 的类型", type.ToString())); } swEditPartCommandStatus_e state = (swEditPartCommandStatus_e)info; return(state); }
// Строит или изменяет модель public void Build() { InitAndRunSwApp(); // имена размеров в документе полумуфты string fingerParameter1 = "fingers@Круговой массив1"; string fingerParameter2 = "fingers@Круговой массив2"; string nomianalDiameterParameter = "nominalDiameter@Эскиз1"; // имя полумуфты в сборке (имя компонента верхнего уровня) string assemblyPolumuftaName = "Полумуфта-1"; // Менеджер выделения, выбора SelectionMgr swSelMgr = (SelectionMgr)swModel.SelectionManager; // удалить выделение swModel.ClearSelection2(true); Component2 swComp = assembly.GetComponentByName(assemblyPolumuftaName); // выбрать полумуфту, не добавлять к выбранным, дата?, показать всплывающее кокшко swComp.Select4(false, null, false); int info = 0; // начать изменение полумуфты assembly.EditPart2(false, false, ref info); // получить редактируемую модель ModelDoc2 polumufta = (ModelDoc2)assembly.GetEditTarget(); // установка изменяемых параметров для всех конфигураций polumufta.Parameter(fingerParameter1).SetSystemValue3( countFingers, (int)swSetValueInConfiguration_e.swSetValue_InAllConfigurations ); polumufta.Parameter(fingerParameter2).SetSystemValue3( countFingers, (int)swSetValueInConfiguration_e.swSetValue_InAllConfigurations ); polumufta.Parameter(nomianalDiameterParameter).SetSystemValue3( nominalDiameter, (int)swSetValueInConfiguration_e.swSetValue_InAllConfigurations ); // ?? bool retVal = polumufta.EditSuppress2(); //Debug.Assert(retVal); // ?? assembly.EditAssembly(); swModel.EditRebuild3(); swModel.ForceRebuild3(false); swModel.ViewZoomtofit2(); }