/// <summary> /// 注意这个函数不能为空函数,最终的模型操作不要写在此函数中,solidworks易死掉. /// </summary> /// <param name="Reason"></param> public void OnClose(int Reason) { try { featureData = newFeaturePmPage.handler.featureData; feature = newFeaturePmPage.handler.feature; if (featureData == null && Reason == 1) { PmpResultStatus = PMPResultStatus.CreateFeautre_Ok; } else if (featureData == null && Reason == 2) { PmpResultStatus = PMPResultStatus.CreateFeautre_Cancel; } if (featureData != null && Reason == 1) { PmpResultStatus = PMPResultStatus.EditFeautre_OK; } else if (featureData != null && Reason == 2) { PmpResultStatus = PMPResultStatus.EditFeautre_Cancel; } } catch (Exception e) { } }
/// <summary> /// 主动编辑时调用 /// </summary> /// <param name="app"></param> /// <param name="modelDoc"></param> /// <param name="feature"></param> /// <returns></returns> public object Edit(object app, object modelDoc, object feat) { feature = (Feature)feat; //MacroFeatureData featData = (MacroFeatureData)f.GetDefinition(); featureData = (MacroFeatureData)feature.GetDefinition(); newFeaturePmPage.handler = this; newFeaturePmPage.Show(featureData, modelDoc, feature); return(true); }
/// <summary> /// 注意这个函数不能为空函数,最终的模型操作 /// </summary> public void AfterClose() { switch (PmpResultStatus) { case PMPResultStatus.CreateFeautre_Ok: AddMacroFeature(); break; case PMPResultStatus.CreateFeautre_Cancel: break; case PMPResultStatus.EditFeautre_Cancel: featureData.ReleaseSelectionAccess(); featureData = null; break; case PMPResultStatus.EditFeautre_OK: object retParamNames = null; object retParamValues = null; object paramTypes = null; featureData.GetParameters(out retParamNames, out paramTypes, out retParamValues); featureData.SetStringByName("Size", newFeaturePmPage.SizeValue); // featureData.GetParameters(out retParamNames, out paramTypes, out retParamValues); // featureData.SetParameters(retParamNames, paramTypes, retParamValues); if (feature != null) { feature.ModifyDefinition(featureData, iSwApp.ActiveDoc, null); } featureData.ReleaseSelectionAccess(); newFeaturePmPage.handler.featureData = null; newFeaturePmPage.handler.feature = null; break; } }
/// <summary> /// 这里是修改时,带特征数据来填充页面,然后显示PMP /// </summary> /// <param name="featData"></param> /// <param name="modelDoc"></param> /// <param name="fea"></param> public void Show(MacroFeatureData featData, Object modelDoc, Feature fea) { object retParamNames = null; object retParamValues = null; object paramTypes = null; object retSelObj; object selObjType; object selMarks; object selDrViews; object compXforms; featData.AccessSelections(modelDoc, null); featData.GetParameters(out retParamNames, out paramTypes, out retParamValues); featData.GetSelections3(out retSelObj, out selObjType, out selMarks, out selDrViews, out compXforms); var objectsArray = (object[])retSelObj; var typesArray = (swSelectType_e[])selObjType; var marksArray = (int[])selMarks; var swmodel = (ModelDoc2)iSwApp.ActiveDoc; var swSelMgr = (SelectionMgr)swmodel.SelectionManager; var selections = objectsArray.Select((o, i) => new { o, t = typesArray[i], m = marksArray[i] }).ToList(); var selectionsByMark = selections.GroupBy(s => s.m); foreach (var s in selectionsByMark) { var selectionData = swSelMgr.CreateSelectData(); selectionData.Mark = s.Key; var array = s.Select(o => o.o).ToArray(); var count = swmodel.Extension.MultiSelect2(ObjectArrayToDispatchWrapper(array), true, selectionData); if (array.Length != count) { MessageBox.Show("Unable to select objects"); } } string[] Pvs = (string[])retParamValues; numberSize.Value = double.Parse(Pvs[0]); if (swPropertyPage != null) { swPropertyPage.Show(); } }