コード例 #1
0
        /// <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)
            {
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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;
            }
        }
コード例 #4
0
        /// <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();
            }
        }