IConfiguration Interface

本文档详述了如何使用 SolidWorks API 对零件、装配体和图纸的配置进行管理,包括添加、重命名、更新和删除配置,以及设置显示状态、爆炸视图和颜色。此外,还展示了如何处理组件的显示状态、爆炸步骤以及在不同显示状态下的组件可见性。这些示例涵盖了从检查配置重建标志到改变显示状态特定材料属性的多种操作,为SolidWorks自动化提供实用指导。
摘要由CSDN通过智能技术生成

Solidworks学习笔记-链接Solidworks

属性

NameDescription备注
AddRebuildSaveMarkAdds or removes the mark indicating whether the configuration needs to be rebuilt and its configuration data saved every time you save the model document.  添加或删除指示是否需要重建配置以及每次保存模型文档时保存其配置数据的标记。
AlternateNameGets or sets the configuration's alternate name (i.e., user-specified name).  获取或设置配置的备用名称(即用户指定的名称)。
BOMPartNoSourceGets the source of the part number used in the BOM table.  获取 BOM 表中使用的零件编号的来源。
ChildComponentDisplayInBOMGets or sets the child component display option of a configuration in a Bill of Materials (BOM) for an assembly document.  获取或设置装配体文档的材料明细表 (BOM) 中配置的子零部件显示选项。
CommentGets or sets the configuration comment.  获取或设置配置注释。
CustomPropertyManagerGets the custom property information for this configuration.  获取此配置的自定义属性信息。
DescriptionGets or sets the description of the configuration.  获取或设置配置的描述。
DimXpertManagerGets the DimXpert schema for this configuration.  获取此配置的 DimXpert 架构。
HideNewComponentModelsGets or sets whether new components are hidden in this inactive configuration.  获取或设置新组件是否隐藏在此非活动配置中。
LargeDesignReviewMarkGets or sets whether to generate a display list for this configuration when the document is saved.  获取或设置是否在保存文档时为此配置生成显示列表。
LockGets or sets whether the configuration is locked.  获取或设置配置是否被锁定。
NameGets or sets the configuration name.  获取或设置配置名称。
NeedsRebuildGets whether the configuration needs to be rebuilt.  获取配置是否需要重建。
SuppressNewComponentModelsGets or sets whether new components are suppressed in this configuration.  获取或设置是否在此配置中压缩新组件。
SuppressNewFeaturesGets or sets whether to suppress new features in this configuration.  获取或设置是否取消此配置中的新功能。
TypeGets the type of configuration.  获取配置类型。
UseAlternateNameInBOMGets or sets whether the alternate name (i.e., user-specified name) is displayed in the bill of materials for this configuration.  获取或设置替代名称(即用户指定的名称)是否显示在此配置的物料清单中。
UseDescriptionInBOMGets or sets whether the description of the configuration is displayed in the bill of materials.  获取或设置配置说明是否显示在物料清单中。
//This example shows how to mark each configuration in a multi-configuration model as //needing to be rebuilt and how to save its configuration data, including preview //bitmaps, every time you save the model document.

//------------------------------------------------------------
// Preconditions: 
// 1. Verify that the specified file to open exists.
// 2. Open the Immediate window.
//
// Postconditions: 
// 1. Activates each configuration in the model.
// 2. Sets each configuration's Rebuild/Save Mark to true, if it is false.
// 3. Saves each configuration's preview bitmap to disk.
// 4. Examine the Immediate window.
//
// NOTES: 
// * In SOLIDWORKS 2013 and later, to mark each configuration
//   as needing to be rebuilt and to save its configuration data
//   every time you save the model:
//   1. Activate each configuration and set
//      IConfiguration::AddRebuildSaveMark to true.
//   2. Save the model.
// * Because this model is used elsewhere, do not
//   save changes.
//------------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;
 
namespace AddRebuildSaveMarkCSharp.csproj
{
    public partial class SolidWorksMacro
    { 
 
        public void Main()
        {
 
            ModelDoc2 swModel = default(ModelDoc2);
            Configuration swConfig = default(Configuration);
            ConfigurationManager swConfMgr = default(ConfigurationManager);
            object[] configNameArr = null;
            string configName = null;
            string fileName = null;
            string bitmapName = null;
            string bitmapPathName = null;
            bool status = false;
            int errors = 0;
            int warnings = 0;
            int i = 0; 
 
            fileName = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\api\\multiconfig-part-2.sldprt";
            swModel = (ModelDoc2)swApp.OpenDoc6(fileName, (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);
            swConfMgr = (ConfigurationManager)swModel.ConfigurationManager;
            configNameArr = (object[])swModel.GetConfigurationNames();
 
            Debug.Print("Checking each configuration's Add Rebuild/Save Mark setting after opening the model document:");
 
            for (i = 0; i <= configNameArr.GetUpperBound(0); i++)
            {
                configName = (string)configNameArr[i];
                swConfig = (Configuration)swModel.GetConfigurationByName(configName);
                status = swModel.ShowConfiguration2(configName);
                Debug.Print("   " + configName + "'s" + " Add Rebuild/Save Mark = " + swConfig.AddRebuildSaveMark);
                if (swConfig.AddRebuildSaveMark == false)
                {
                    swConfig.AddRebuildSaveMark = true;
                    bitmapName = configName + ".bmp";
                    Debug.Print("      Resetting " + configName + "'s" + " Add Rebuild/Save Mark = " + swConfig.AddRebuildSaveMark);
                    bitmapPathName = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\api\\" + bitmapName;
                    status = swApp.GetPreviewBitmapFile(fileName, configName, bitmapPathName);
                    if (status)
                    {
                        Debug.Print("      " + configName + "'s " + "preview bitmap written to disk: " + bitmapPathName);
                    }
                }
            }
 
            //Save the model to save each configuration's data with the model
            //status = swModel.Save3(swSaveAsOptions_e.swSaveAsOptions_Silent, errors, warnings)
 
        }
 
        /// <summary>
        /// The SldWorks swApp variable is pre-assigned for you.
        /// </summary>
        public SldWorks swApp; 
 
    }
}
//This example shows how to get a list of configuration names for the active document.

//------------------------------------------------------------------
// Preconditions:
// 1. Verify that the specified assembly document exists.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Opens the specified assembly document.
// 2. Gets the name of the file, name of the active configuration,
//    and the names of all configurations.
// 3. Examine the Immediate window.
//
// NOTE: Because the assembly is used elsewhere, do not save changes.
//-------------------------------------------------------------------
 
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;
 
namespace Macro1.csproj
{
    public partial class SolidWorksMacro
    {
 
        public void Main()
        {
            ModelDoc2 swModel = default(ModelDoc2);
            string[] configNames = null;
            string configName = null;
            Configuration swConfig = default(Configuration);
            int i = 0;
            int errors = 0;
            int warnings = 0;
            string fileName = null;
 
            fileName = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\smartcomponents\\pillow_block.sldasm";
            swModel = (ModelDoc2)swApp.OpenDoc6(fileName, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);
 
            //Get and print active model path and name
            Debug.Print("File = " + swModel.GetPathName());
            Debug.Print("");
            //Get and print name of active configuration
            swConfig = (Configuration)swModel.GetActiveConfiguration();
            Debug.Print("  Name of active configuration = " + swConfig.Name);
            Debug.Print("");
 
            //Get and print names of all configurations
            configNames = (string[])swModel.GetConfigurationNames();
            for (i = 0; i < configNames.Length; i++)
            {
                configName = (string)configNames[i];
                swConfig = (Configuration)swModel.GetConfigurationByName(configName);
                Debug.Print("  Name of configuration(" + i + ") = " + configName);
                Debug.Print("    Use alternate name in BOM  = " + swConfig.UseAlternateNameInBOM);
                Debug.Print("    Alternate name             = " + swConfig.AlternateName);
                Debug.Print("    Comment                    = " + swConfig.Comment);
                Debug.Print("");
            }
 
        }
 
        /// <summary>
        ///  The SldWorks swApp variable is pre-assigned for you.
        /// </summary>
        public SldWorks swApp;
    }
}
//This example shows how to add a configuration to an assembly and promote its child //components one level in a BOM.

//----------------------------------------
// Preconditions:
// 1. Specified assembly document exists.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Opens the specified assembly document.
// 2. Adds a new configuration named Config2.
// 3. Sets the option to dissolve the assembly's 
//    configuration when it appears in a BOM and 
//    promote all of its child components one level.
// 4. To verify, examine the option value printed to
//    the Immediate window.
//
// NOTE: Because this assembly document is used
// elsewhere, do not save changes when closing it.
//----------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;
 
namespace ChildComponentDisplayInBOMCSharp.csproj
{
    public partial class SolidWorksMacro
    {
        AssemblyDoc swAssembly;
        ModelDoc2 swModel;
        ModelDocExtension swModelDocExt;
        Configuration swConfig;
        string fileName;
        bool status;
        int errors;
        int warnings;
 
        public void Main()
        {
            //Open assembly document 
            fileName = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\advdrawings\\bowl and chute.sldasm";
            swAssembly = (AssemblyDoc)swApp.OpenDoc6(fileName, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);
            swModel = (ModelDoc2)swAssembly;
 
            //Add configuration named Config2
            swModelDocExt = (ModelDocExtension)swModel.Extension;
            status = swModelDocExt.SelectByID2("bowl and chute.SLDASM", "COMPONENT", 0, 0, 0, false, 0, null, 0);
            swModel.ClearSelection2(true);
            swConfig = (Configuration)swModel.AddConfiguration3("Config2", "", "", (int)swConfigurationOptions2_e.swConfigOption_DoDisolveInBOM + (int)swConfigurationOptions2_e.swConfigOption_DontShowPartsInBOM);
 
            //Dissolve the assembly's configuration
            //when it appears in a BOM and promote all of
            //its child components one level
            swConfig.ChildComponentDisplayInBOM = (int)swChildComponentInBOMOption_e.swChildComponent_Promote;
            Debug.Print("Child component display option in BOM: " + swConfig.ChildComponentDisplayInBOM);
        }
 
        /// <summary>
        ///  The SldWorks swApp variable is pre-assigned for you.
        /// </summary>
        public SldWorks swApp;
    }
}
//This example shows how to traverse an assembly and display the description of each //configuration in the bill of materials.

//--------------------------------------------------------------------------
// Preconditions:
// 1. Open public_documents\samples\tutorial\smartcomponents\pillow_block.sldasm.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Traverses the configurations.
// 2. Gets the name of each configuration and its description.
// 3. Sets and gets whether to display the description of each configuration
//    in the bill of materials.
// 4. Examine the Immediate window.
//
// NOTE: Because the assembly is used elsewhere, do not save changes.
//--------------------------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;
 
namespace Macro1CSharp.csproj
{
    public partial class SolidWorksMacro
    {
 
 
        public void Main()
        {
            ModelDoc2 swModel = default(ModelDoc2);
            string[] vConfigNameArr = null;
            Configuration swConfig = default(Configuration);
            Configuration swParentConfig = default(Configuration);
            ConfigurationManager swConfMgr = default(ConfigurationManager);
            object[] vChildConfigArr = null;
            Configuration swChildConfig = default(Configuration);
 
            swModel = (ModelDoc2)swApp.ActiveDoc;
            swConfMgr = (ConfigurationManager)swModel.ConfigurationManager;
            Debug.Print("File = " + swModel.GetPathName());
            Debug.Print("");
            // Traverse configurations; always at least one configuration exists
            vConfigNameArr = (string[])swModel.GetConfigurationNames();
            foreach (string vConfigName in vConfigNameArr)
            {
                swConfig = (Configuration)swModel.GetConfigurationByName(vConfigName);
                Debug.Print("  Configuration name = " + swConfig.Name);
                Debug.Print("    Description = " + swConfig.Description);
                swConfig.UseDescriptionInBOM = true;
                Debug.Print("    Display description in bill of materials? " + swConfig.UseDescriptionInBOM);
                // Process parent
                swParentConfig = (Configuration)swConfig.GetParent();
                if ((swParentConfig != null))
                {
                    Debug.Print("      Parent = " + swParentConfig.Name);
                }
                // Process children
                vChildConfigArr = (object[])swConfig.GetChildren();
                if ((vChildConfigArr != null))
                {
                    foreach (object vChildConfig in vChildConfigArr)
                    {
                        swChildConfig = (Configuration)vChildConfig;
                        Debug.Print("      Child = " + swChildConfig.Name);
                    }
                }
                Debug.Print("");
            }
 
 
        }
 
        /// <summary>
        ///  The SldWorks swApp variable is pre-assigned for you.
        /// </summary>
        public SldWorks swApp;
    }
}
This example shows how to get and set the Large Design Review marks for all of the configurations in an assembly.

//---------------------------------------------------------------------------
// Preconditions:
// 1. Open public_documents\samples\tutorial\driveworksxpress\mobile gantry.sldasm.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Gets the current Large Design Review marks for all configurations.
// 2. Sets the Large Design Review marks for all configurations to true.
// 3. Gets the modified Large Design Review marks for all configurations.
// 4. Examine the Immediate window.
//
// NOTE: Because the assembly is used elsewhere, do not save changes.
//---------------------------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;
 
namespace Macro1CSharp.csproj
{
    public partial class SolidWorksMacro
    {
        public void Main()
        {
            ModelDoc2 swModel = default(ModelDoc2);
            Configuration swConf = default(Configuration);
            ConfigurationManager swConfMgr = default(ConfigurationManager);
            string[] configNameArr = null;
 
            swModel = (ModelDoc2)swApp.ActiveDoc;
            swConfMgr = (ConfigurationManager)swModel.ConfigurationManager;
            configNameArr = (string[])swModel.GetConfigurationNames();
 
            //Get current Large Design Review marks for all configurations
            Debug.Print("Current Large Design Review marks for configurations:");
            foreach (string configName in configNameArr)
            {
                swConf = (Configuration)swModel.GetConfigurationByName(configName);
                Debug.Print("  " + configName + ": " + swConf.LargeDesignReviewMark);
            }
 
            //Set Large Design Review marks for all configurations to true
            foreach (string configName in configNameArr)
            {
                swConf = (Configuration)swModel.GetConfigurationByName(configName);
                swConf.LargeDesignReviewMark = true;
            }
 
            //Get modified Large Design Review marks for all configurations
            Debug.Print("Modified Large Design Review marks for configurations:");
            foreach (string configName in configNameArr)
            {
                swConf = (Configuration)swModel.GetConfigurationByName(configName);
                Debug.Print("  " + configName + ": " + swConf.LargeDesignReviewMark);
            }
 
        }
 
        /// <summary>
        ///  The SldWorks swApp variable is pre-assigned for you.
        /// </summary>
        public SldWorks swApp;
    }
}
This example shows how to get the name and ID of the active configuration of a part or assembly or the current sheet of a drawing.

NOTE: A unique ID is assigned to each configuration and drawing. This ID does not change when the name of the configuration or drawing sheet is changed.

//-------------------------------------------------------
// Preconditions: 
// 1. Open a part, assembly, or drawing document.
// 2. Open the Immediate window.
//
// Postconditions: 
// 1. Changes either the active configuration's name or
//    the current sheet's name to Test. However, the 
//    document's ID is unchanged.
// 2. Examine the Immediate window.
//------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
 
namespace Macro1CSharp.csproj
{
    partial class SolidWorksMacro
    {
        public void Main()
        {
            ModelDoc2 swModel = default(ModelDoc2);
            Configuration swConfig = default(Configuration);
            DrawingDoc swDrawingDoc = default(DrawingDoc);
            Sheet swSheet = default(Sheet);
            int nDocType = 0;
 
            swModel = (ModelDoc2)swApp.ActiveDoc;
 
            // Get type of model document 
            if (swModel.GetType() == 1)
            { 
                nDocType = (int)swDocumentTypes_e.swDocPART;
            }
            else if (swModel.GetType() == 2)
            {
                nDocType = (int)swDocumentTypes_e.swDocASSEMBLY;
            }
            else if (swModel.GetType() == 3)
            { 
                nDocType = (int)swDocumentTypes_e.swDocDRAWING;
            }
            else
            {
                // Not a SOLIDWORKS model document, 
                // so exit macro 
                return;
            }
 
            // If a part or assembly document, 
            // then get the name of it and its ID 
            if (nDocType != (int)swDocumentTypes_e.swDocDRAWING)
            {
                swConfig = (Configuration)swModel.GetActiveConfiguration();
                if ((swConfig != null))
                {
                    Debug.Print("Active configuration's name = " + swConfig.Name + ", ID = " + swConfig.GetID());
                    // Change the active configuration's name 
                    swConfig.Name = "Test";
                    // Test to see if the ID remains the same 
                    // after changing the name of the configuration 
                    Debug.Print("Active configuration's new name = " + swConfig.Name + ", ID = " + swConfig.GetID());
                }
                return;
            }
 
            // A drawing sheet must be active, 
            // so get its name and ID 
            swDrawingDoc = (DrawingDoc)swModel;
            swSheet = (Sheet)swDrawingDoc.GetCurrentSheet();
            if ((swSheet != null))
            {
                Debug.Print("Current sheet's name = " + swSheet.GetName() + ", ID = " + swSheet.GetID());
                // Change current sheet's name 
                swSheet.SetName("Test");
                // Test to see if the ID remains the same 
                // after changing the name of the sheet 
                Debug.Print("Current sheet's new name = " + swSheet.GetName() + ", ID = " + swSheet.GetID());
            }
 
        }
 
        public SldWorks swApp;
 
    }
 
}
This example shows how to find out if the configurations in an assembly are loaded, whether the configurations need to be updated and rebuilt, and the configuration types.

//----------------------------------------------------------------------- 
// Preconditions: 
// 1. Verify that the assembly document to open exists.
// 2. Open the Immediate window. 
// 
// Postconditions: 
// 1. Loads all configurations.
// 2. Examine the Immediate window to see the states of the
//    configurations.
// 
// NOTE: Because the specified assembly document is used elsewhere,  
// do not save the document when you close it. 
// --------------------------------------------------------------- 
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
namespace IsLoadedConfigurationCSharp.csproj
{
    public partial class SolidWorksMacro
    {
        public void Main()
        {
 
            ModelDoc2 swModel = default(ModelDoc2);
            Configuration swConfiguration = default(Configuration);
            ConfigurationManager swConfigurationMgr = default(ConfigurationManager);
            object[] ConfNameArr = null;
            string ConfName = null;
            const string DocFilename = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\pdmworks\\speaker.sldasm";
            bool boolstatus = false;
            int Errors = 0;
            int Warnings = 0;
            int i;
 
            swModel = (ModelDoc2)swApp.OpenDoc6(DocFilename, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref Errors, ref Warnings);
            if (swModel == null)
            {
                return;
            }
            else
            {
                Debug.Print("File = " + swModel.GetPathName());
                Debug.Print("");
            }
 
            swConfigurationMgr = (ConfigurationManager)swModel.ConfigurationManager;
            swConfiguration = (Configuration)swConfigurationMgr.ActiveConfiguration;
            ConfNameArr = (object[])swModel.GetConfigurationNames();
            Debug.Print("Traverse assembly without activating other configurations...");
            for (i = 0; i < ConfNameArr.Length; i++)
            {
                ConfName = (string)ConfNameArr[i];
                swConfiguration = (Configuration)swModel.GetConfigurationByName(ConfName);
                Debug.Print(" Name of the configuration: " + swConfiguration.Name);
                Debug.Print("     Is the configuration loaded? " + swConfiguration.IsLoaded());
                Debug.Print("     Does the configuration need to be updated? " + swConfiguration.IsDirty());
                Debug.Print("     Does the configuration need to be rebuilt? " + swConfiguration.NeedsRebuild);
                Debug.Print("     What is the configuration type? ? " + swConfiguration.Type);
            }
 
            Debug.Print("");
 
            // Traverse the assembly again, but this time activate all 
            // configurations, which loads them 
            Debug.Print("Traverse assembly and activate all configurations...");
            for (i = 0; i < ConfNameArr.Length; i++)
            {
                ConfName = (string)ConfNameArr[i];
                swConfiguration = (Configuration)swModel.GetConfigurationByName(ConfName);
                boolstatus = swModel.ShowConfiguration2(ConfName);
                swConfiguration = (Configuration)swConfigurationMgr.ActiveConfiguration;
                Debug.Print(" Name of the configuration: " + swConfiguration.Name);
                Debug.Print("     Is the configuration loaded? " + swConfiguration.IsLoaded());
                Debug.Print("     Does the configuration need to be updated? " + swConfiguration.IsDirty());
                Debug.Print("     Does the configuration need to be rebuilt? " + swConfiguration.NeedsRebuild);
                Debug.Print("     What is the configuration type? ? " + swConfiguration.Type);
            }
        }
 
 
        /// <summary> 
        /// The SldWorks swApp variable is pre-assigned for you. 
        /// </summary> 
        public SldWorks swApp;
    }
}

方法

NameDescription备注
AddExplodeStep2Adds a regular (translate and rotate) explode step to the explode view of the active configuration.  向活动配置的爆炸视图添加常规(平移和旋转)爆炸步骤。
AddRadialExplodeStepAdds a radial explode step to the explode view of the active configuration.  向活动配置的爆炸视图添加径向爆炸步骤。
ApplyDisplayStateApplies the specified display state to this configuration.  将指定的显示状态应用于此配置。
CopyDisplayStateFromConfigurationCopies the specified display state from the specified configuration to this configuration.  将指定的显示状态从指定的配置复制到此配置。
CreateDisplayStateCreates a display state for this configuration.  为该配置创建一个显示状态。
DeleteDisplayStateDeletes the specified display state from this configuration.  从此配置中删除指定的显示状态。
DeleteExplodeStepDeletes the specified explode step in the configuration explode step sequence.  删除配置爆炸步骤序列中的指定爆炸步骤。
GetChildrenGets all of the children configurations of this derived configuration.  获取此派生配置的所有子配置。
GetChildrenCountGets the number of children for this configuration.  获取此配置的子项数。
GetComponentConfigNameGets the referenced configuration name of the specified component in this configuration.  获取此配置中指定组件的引用配置名称。
GetComponentSuppressionStateGets the suppression state of the specified component in this configuration.  获取此配置中指定组件的压缩状态。
GetDisplayStateBodyPropertiesGets the bodies and their material properties in the specified display state.  获取指定显示状态下的实体及其材料属性。
GetDisplayStateComponentPropertiesGets the components and their material properties in the specified display state.  获取指定显示状态下的组件及其材料属性。
GetDisplayStateComponentVisibilityGets the components and their visibilities in the specified display state.  获取指定显示状态下的组件及其可见性。
GetDisplayStateFacePropertiesGets the faces and their material properties in the specified display state.  获取指定显示状态下的面及其材料属性。
GetDisplayStateFeaturePropertiesGets the features and their material properties in the specified display state.  获取指定显示状态下的特征及其材料属性。
GetDisplayStatePropertiesGets the material properties of the specified display state.  获取指定显示状态的材料属性。
GetDisplayStatesGets the names of the display states for this configuration.  获取此配置的显示状态名称。
GetDisplayStatesCountGets the number of display states for this configuration.  获取此配置的显示状态数。
GetExpandedGets whether this configuration's node is expanded in the specified pane of the ConfigurationManager.  获取此配置的节点是否在 ConfigurationManager 的指定窗格中展开。
GetExplodeStepGets the specified explode step in this configuration's explode step sequence.  获取此配置的爆炸步骤序列中指定的爆炸步骤。
GetIDGets the configuration ID of this configuration.  获取此配置的配置 ID。
GetNumberOfExplodeStepsGets the number of explode steps for this configuration.  获取此配置的爆炸步骤数。
GetParameterCountGets the number of parameters for this configuration.  获取此配置的参数数量。
GetParametersGets the parameters (suppression state of features, suppression state or visibility of components, dimensions, and so on) for this configuration.  获取此配置的参数(特征的压缩状态、组件的压缩状态或可见性、尺寸等)。
GetParentGets the parent configuration of this derived configuration.  获取此派生配置的父配置。
GetRootComponent3Gets the root component for this assembly configuration.  获取此程序集配置的根组件。
GetSceneGets the ISwScene object for this configuration.  获取此配置的 ISwScene 对象。
GetStreamNameGets the name of the stream for the current configuration.  获取当前配置的流的名称。
IAddExplodeStepAdds a new explode step to the configuration.  向配置添加新的爆炸步骤。
IGetChildrenGets all of the children configurations of this derived configuration.  获取此派生配置的所有子配置。
IGetDisplayStatesGets the names of the display states for this configuration.  获取此配置的显示状态名称。
IGetExplodeStepGets a pointer to the specified explode step in the configuration explode step sequence.  获取指向配置爆炸步骤序列中指定爆炸步骤的指针。
IGetParametersGets the parameters (suppression state of features, suppression state or visibility of components, dimensions, and so on) for this configuration.  获取此配置的参数(特征的压缩状态、组件的压缩状态或可见性、尺寸等)。
IsDerivedGets whether this configuration is a derived configuration.  获取此配置是否为派生配置。
IsDirtyGets whether this configuration is dirty (i.e., needs to be updated).  获取此配置是否脏(即需要更新)。
ISetParametersSets the parameters (suppression state of features, suppression state or visibility of components, dimensions, and so on) for this configuration.  设置此配置的参数(特征的抑制状态、抑制状态或组件的可见性、尺寸等)。
IsLoadedGets whether a configuration is loaded.  获取是否加载了配置。
IsSpeedPakGets whether the configuration is a SpeedPak.  获取配置是否为 SpeedPak。
RenameDisplayStateRenames a display state of this configuration.  重命名此配置的显示状态。
Select2Selects the configuration.  选择配置。
SetColorSets the color for this configuration.  设置此配置的颜色。
SetExpandedSets whether to expand this configuration's node in the specified pane of the ConfigurationManager.  设置是否在 ConfigurationManager 的指定窗格中展开此配置的节点。
SetParametersSets the parameters (suppression state of features, suppression state or visibility of components, dimensions, and so on) for this configuration.  设置此配置的参数(特征的抑制状态、压缩状态或组件的可见性、尺寸等)。
UpdateSpeedPakUpdates the SpeedPak configuration for this configuration.更新此配置的 SpeedPak 配置。
This example shows how to create, unlink, and purge display states in a part document. 

//---------------------------------------------
// Preconditions:
// 1. Open public_documents\samples\tutorial\multibody\multi-inter.sldprt,
//    whose Default configuration has two display states:
//    * PhotoWorks Display
//    * Display State 1
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Creates and unlinks Display State 2.
// 2. Attempts to purge any display states identical to
//    Display State 2.
// 3. Closes the part document without saving any changes.
// 4. Examine the Immediate window.
//-----------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
namespace AddAndPurgeDisplayStates_CSharp.csproj
{
    partial 
 class SolidWorksMacro
    {
        public PartDoc swPart;

        public 
 void Main()
        {
            ModelDoc2 swModel = default(ModelDoc2);
            Configuration swConfig = default(Configuration);
            ModelDocExtension swModelDocExt = default(ModelDocExtension);
            bool boolstatus = false;
            string modelName = null;
            swModel = (ModelDoc2)swApp.ActiveDoc;
 

            // Get Default configuration and create a display state 
            swConfig = (Configuration)swModel.GetConfigurationByName("Default");
            boolstatus = swConfig.CreateDisplayState("Display State 2");
            if (boolstatus) Debug.Print("Display State 2 created.");
            swModel.ForceRebuild3(true);

            // If display is linked, unlink it 
            swModelDocExt = swModel.Extension;
            Debug.Print("Is Display State 2 linked? " + swModelDocExt.LinkedDisplayState);
            swModelDocExt.LinkedDisplayState = false;
            Debug.Print("Is Display State 2 still linked? " + swModelDocExt.LinkedDisplayState);

            // Purge any display states identical to Display State 2
            boolstatus = swModelDocExt.PurgeDisplayState();
            Debug.Print("Identical display states to Display State 2 purged? " + boolstatus);
            swModel.ForceRebuild3(true);

            // Close the part without saving changes 
            modelName = swModel.GetTitle();
            swApp.QuitDoc(modelName);

        }

        public SldWorks swApp;

    }

}
This example shows how to add an appearance to and delete an appearance from specific display states.

//--------------------------------------------------------------------------
// Preconditions:
// 1. Specified model exists.
// 2. Specified appearance exists.
// 3. Open an Immediate window.
//
// Postconditions:
// 1. Creates Display State 2 and Display State 3 for the active
//    configuration.
// 2. Applies specified appearance to all display states of the active
//    configuration.
// 3. Press F5.
// 4. Deletes specified appearance from all display states of the active
//    configuration.
// 5. Press F5.
// 6. Closes document.
//---------------------------------------------------------------------------

using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
namespace RenderMaterials_CSharp.csproj
{
    partial class SolidWorksMacro
    {
ModelDoc2 swModel;
Configuration swConfig;
ModelDocExtension swModelDocExt;
Entity swEntity;
SelectionMgr swSelMgr;
RenderMaterial swRenderMaterial;
object[] displayStateNames;
bool status;
string modelName;
string materialName;
int errors;
int warnings;
int nbrDisplayStates;
int i;
int k;
int nbrMaterials;
int materialID1;
int materialID2;
int[] materialID1_ToDelete = new int[1];
int[] materialID2_ToDelete = new int[1];

public void Main()
{
modelName = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\dimxpert\\bracket_auto_manual.sldprt";

swModel = swApp.OpenDoc6(modelName, (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);

swModelDocExt = swModel.Extension;
// Get active configuration and create a new display
// state for this configuration
swConfig = (Configuration)swModel.GetActiveConfiguration();
status = swConfig.CreateDisplayState("Display State 2");
swModel.ForceRebuild3(true);

// Get active configuration and create another new
// display state for this configuration
swConfig = (Configuration)swModel.GetActiveConfiguration();
status = swConfig.CreateDisplayState("Display State 3");
swModel.ForceRebuild3(true);

// Create appearance
materialName = "C:\\Program Files\\SolidWorks Corp\\SolidWorks\\data\\graphics\\materials\\metal\\steel\\stainless steel treadplate.p2m";
swRenderMaterial = swModelDocExt.CreateRenderMaterial(materialName);

// Select a face and add the appearance to that face
status = swModelDocExt.SelectByID2("", "FACE", 0.07151920610502, 0.0952597996959, 0.009524999999996, false, 0, null, 0);
swSelMgr = (SelectionMgr)swModel.SelectionManager;
swEntity = (Entity)swSelMgr.GetSelectedObject6(1, -1);
status = swRenderMaterial.AddEntity(swEntity);

// Get the names of display states
displayStateNames = (object[])swConfig.GetDisplayStates();
nbrDisplayStates = swConfig.GetDisplayStatesCount();
Debug.Print("This configuration's display states =");
for (i = 0; i <= (nbrDisplayStates - 1); i++)
{
Debug.Print(" Display state name = " + displayStateNames[i]);
}

// Add appearance to all of the display states
status = swModelDocExt.AddDisplayStateSpecificRenderMaterial(swRenderMaterial, (int)swDisplayStateOpts_e.swAllDisplayState, displayStateNames, out materialID1, out materialID2);

// Get the appearance IDs and names
swRenderMaterial.GetMaterialIds(out materialID1, out materialID2);
Debug.Print(" Appearance IDs:");
Debug.Print(" ID1 = " + materialID1);
Debug.Print(" ID2 = " + materialID2);

nbrMaterials = swModelDocExt.GetRenderMaterialsCount2((int)swDisplayStateOpts_e.swAllDisplayState, null);
Debug.Print(" Number of materials: " + nbrMaterials);
for (k = 0; k <= (nbrMaterials - 1); k++)
{
Debug.Print(" Name of appearance " + (k + 1) + ": " + swModel.MaterialIdName);
}

double xcoord = 0;
double ycoord = 0;
double zcoord = 0;

swRenderMaterial.GetCenterPoint2(out xcoord, out ycoord, out zcoord);
Debug.Print("");
Debug.Print("Texture-based appearance data:");
Debug.Print("X coordinate of center point: " + xcoord);
Debug.Print("Y coordinate of center point: " + ycoord);
Debug.Print("Z coordinate of center point: " + zcoord);
swRenderMaterial.GetUDirection2(out xcoord, out ycoord, out zcoord);
Debug.Print("X coordinate of U direction: " + xcoord);
Debug.Print("Y coordinate of U direction: " + ycoord);
Debug.Print("Z coordinate of U direction: " + zcoord);
swRenderMaterial.GetVDirection2(out xcoord, out ycoord, out zcoord);
Debug.Print("X coordinate of V direction: " + xcoord);
Debug.Print("Y coordinate of V direction: " + ycoord);
Debug.Print("Z coordinate of V direction: " + zcoord);
Debug.Print("");
swModel.ClearSelection2(true);
swModel.ForceRebuild3(true);
Debug.Print("Model has an appearance: " + swModelDocExt.HasMaterialPropertyValues());
object dispStates = null;
status = swRenderMaterial.SetLinkedDisplayStates((int)swDisplayStateOpts_e.swAllDisplayState, displayStateNames);
dispStates = swRenderMaterial.GetLinkedDisplayStates();
object renderMaterials = null;
renderMaterials = swModelDocExt.GetRenderMaterials2((int)swDisplayStateOpts_e.swAllDisplayState, null);
// Examine the display states of the active configuration
// to ensure that the specified appearance was applied to all
// display states 
// Continue running the macro after your examination

System.Diagnostics.Debugger.Break();
// Delete the appearance from the part
materialID1_ToDelete[0] = materialID1;
materialID2_ToDelete[0] = materialID2;
swModelDocExt.DeleteDisplayStateSpecificRenderMaterial((materialID1_ToDelete), (materialID2_ToDelete));
swModel.ForceRebuild3(true);
// Examine the display states of the active configuration
// to ensure that the specified appearance was deleted from all
// display states 
// Continue running the macro after your examination
System.Diagnostics.Debugger.Break();
// Close the part without saving changes
modelName = swModel.GetTitle();
swApp.QuitDoc(modelName);
            }

 

            public SldWorks swApp;

        }

}
//This example shows how to get the names of the display states in an assembly and the //visibilities of the assembly components in each display state.

//------------------------------------------------------------------------------
// Preconditions:
// 1. Open an assembly that contains multiple components
//    and display states.
// 2. Open the Immediate window.
//
// Postconditions: Examine the Immediate window.
//-----------------------------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;
 
namespace DisplayStateComponentsCSharp.csproj
{
    public partial class SolidWorksMacro
    {
 
 
        public void Main()
        {
            ModelDoc2 swModel = default(ModelDoc2);
            ModelDocExtension swModelDocExt = default(ModelDocExtension);
            ConfigurationManager swConfigMgr = default(ConfigurationManager);
            Configuration swConfig = default(Configuration);
            object oComponents = null;
            object[] components = null;
            Component2 comp = null;
            int docType = 0;
            int i = 0;
            int j = 0;
            string[] displayStateNames = null;
            string displayStateName = null;
            int[] displayStateVisibilities = null;
            int displayStateVisibility = 0;
            string visibility = "";
 
            swModel = (ModelDoc2)swApp.ActiveDoc;
            swModelDocExt = (ModelDocExtension)swModel.Extension;
            docType = swModel.GetType();
            if (docType == (int)swDocumentTypes_e.swDocASSEMBLY)
            {
                swConfigMgr = (ConfigurationManager)swModel.ConfigurationManager;
                swConfig = (Configuration)swConfigMgr.ActiveConfiguration;
                displayStateNames = (string[])swConfig.GetDisplayStates();
                for (i = 0; i < displayStateNames.Length; i++)
                {
                    displayStateName = (string)displayStateNames[i];
                    Debug.Print("Display state name: " + displayStateName);
                    displayStateVisibilities = (int[])swConfig.GetDisplayStateComponentVisibility(displayStateName, false, false, out oComponents);
                    components = (object[])oComponents;
                    Debug.Print("  Display state visibility: ");
                    for (j = 0; j < displayStateVisibilities.Length; j++)
                    {
                        displayStateVisibility = (int)displayStateVisibilities[j];
                        switch (displayStateVisibility)
                        {
                            case 0:
                                visibility = "Hidden";
                                break;
                            case 1:
                                visibility = "Shown";
                                break;
                        }
                        comp = (Component2)components[j];
                        Debug.Print("    " + comp.Name2 + ": " + visibility);
                    }
                }
            }
            else
            {
                Debug.Print("Open an assembly document with multiple display states.");
                return;
            }
 
 
        }
 
        /// <summary>
        ///  The SldWorks swApp variable is pre-assigned for you.
        /// </summary>
        public SldWorks swApp;
    }
}

This example shows how to get an explode step and its properties.

//---------------------------------------------------------------
// Preconditions:
// 1. Open an assembly document with an explode view.
// 2. Open an Immediate window.
//
// Postconditions:
// 1. Gets the first explode step.
// 2. Examine the Immediate window.
//---------------------------------------------------------------
 
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;
 
namespace ExplodeStepCSharp.csproj
{
    public partial class SolidWorksMacro
    {
 
        public void Main()
        {
            ModelDoc2 swModel = default(ModelDoc2);
            ConfigurationManager swConfigurationMgr = default(ConfigurationManager);
            Configuration swConfiguration = default(Configuration);
            ExplodeStep swExplodeStep = default(ExplodeStep);
 
            swModel = (ModelDoc2)swApp.ActiveDoc;
 
            //Get explode step
            swConfigurationMgr = (ConfigurationManager)swModel.ConfigurationManager;
            swConfiguration = (Configuration)swConfigurationMgr.ActiveConfiguration;
            swExplodeStep = (ExplodeStep)swConfiguration.GetExplodeStep(0);
            Debug.Print("Name of explode step: " + swExplodeStep.Name);
            Debug.Print("Number of components that move in this explode step: " + swExplodeStep.GetNumOfComponents());
            Debug.Print("Is the sub-assembly rigid? " + swExplodeStep.IsSubAssemblyRigid()); 
 
        }
 
        /// <summary>
        ///  The SldWorks swApp variable is pre-assigned for you.
        /// </summary>
        public SldWorks swApp;
    }
}
//This example shows how to change the color of a:

//selected component in a specific display state at the assembly and part levels. 
//component in its part document. 
//----------------------------------------------
// Preconditions: Verify that the specified assembly and part exist.
//
// Postconditions: 
//  1. Opens the specified assembly document.
//  2. Examine the graphics area, then press F5.
//  3. Changes the selected component's, USB_cover1, 
//     assembly-level color from the default red
//     to gray in the specified display state. This
//     is the overriding color level.
//  4. Examine the component in the graphics area, then press F5.
//  5. Changes the selected component's, USB_cover1, part-level
//     color from red to green in the specified display state of
//     the component part. This is not the overriding color level.
//  6. Closes, but does not save, the assembly document.
//  7. Opens the component's part document, USB_cover1.sldprt.
//  8. Examine the graphics area, then press F5.
//  9. Changes part's color from red to green in the specified
//     display state of the part. This is the overriding color
//     level.
// 10. Examine the graphics area, then press F5.
// 11. Closes, but does not save, the part document.
//-----------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
 
namespace AppearancesCSharp.csproj
{
 
    partial class SolidWorksMacro
    {
 
        public void Main()
        {
 
            ModelDoc2 swModelDoc = null;
            ModelDocExtension swModelDocExt = null;
            SelectionMgr swSelMgr = null;
            DisplayStateSetting swDisplayStateSetting = null;
            Component2 swComponent = null;
            Component2[] swComponents = new Component2[1];
            string[] displayStateNames = new string[1];
            object appearances = null;
            object[] appearancesArray = null;
            AppearanceSetting swAppearanceSetting = default(AppearanceSetting);
            AppearanceSetting[] newAppearanceSetting = new AppearanceSetting[1];
            ConfigurationManager swConfigMgr = default(ConfigurationManager);
            Configuration swConfig = default(Configuration);
            bool status = false;
            int errors = 0;
            int warnings = 0;
            string fileName = "";
            int red_rgb = 0;
            int green_rgb = 0;
            int blue_rgb = 0;
            int newColor = 0;
 
            //Open assembly document
            fileName = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\appearances\\usb_flash_drive1.sldasm";
            swModelDoc = (ModelDoc2)swApp.OpenDoc6(fileName, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);

            System.Diagnostics.Debugger.Break();
            //Examine the graphics area
            //Press F5 to continue
 
            //Select component, USB_cover1
            swModelDocExt = (ModelDocExtension)swModelDoc.Extension;
            swSelMgr = (SelectionMgr)swModelDoc.SelectionManager;
            status = swModelDocExt.SelectByID2("USB_cover1-1@usb_flash_drive1", "COMPONENT", 0, 0, 0, false, 0, null, 0);
            swComponent = (Component2)swSelMgr.GetSelectedObject6(1, -1);
            swComponents[0] = swComponent;
 
            swModelDoc.ClearSelection2(true);
 
            //Get display state 
            swDisplayStateSetting = (DisplayStateSetting)swModelDocExt.GetDisplayStateSetting((int)swDisplayStateOpts_e.swAllDisplayState);
            swDisplayStateSetting.Entities = swComponents;
            swDisplayStateSetting.Option = (int)swDisplayStateOpts_e.swSpecifyDisplayState;
            displayStateNames[0] = "Display State-1";
            swDisplayStateSetting.Names = displayStateNames;
            //Assembly level is default
            swDisplayStateSetting.PartLevel = false;
 
            //Change the selected component's, USB_cover1, 
            //assembly-level color from the default red
            //to gray in the specified display state; this
            //is the overriding color level
            appearances = (object)swModelDocExt.get_DisplayStateSpecMaterialPropertyValues(swDisplayStateSetting);
            appearancesArray = (object[])appearances;
            swAppearanceSetting = (AppearanceSetting)appearancesArray[0];
            red_rgb = 50;
            green_rgb = 50;
            blue_rgb = 50;
            newColor = Math.Max(Math.Min(red_rgb, 255), 0) + Math.Max(Math.Min(green_rgb, 255), 0) * 16 * 16 + Math.Max(Math.Min(blue_rgb, 255), 0) * 16 * 16 * 16 * 16;
            swAppearanceSetting.Color = newColor;
            newAppearanceSetting[0] = (AppearanceSetting)swAppearanceSetting;
            swModelDocExt.set_DisplayStateSpecMaterialPropertyValues(swDisplayStateSetting, newAppearanceSetting);
 
            System.Diagnostics.Debugger.Break();
            //Examine the component in the graphics area
            //Press F5 to continue
 
            swModelDoc.ClearSelection2(true);
 
            status = swModelDocExt.SelectByID2("USB_cover1-1@usb_flash_drive1", "COMPONENT", 0, 0, 0, false, 0, null, 0);
            swComponent = (Component2)swSelMgr.GetSelectedObject6(1, -1);
            swComponents[0] = (Component2)swComponent;
 
            swModelDoc.ClearSelection2(true);
 
            //Get display state
            swDisplayStateSetting = swModelDocExt.GetDisplayStateSetting((int)swDisplayStateOpts_e.swAllDisplayState);
            swDisplayStateSetting.Entities = swComponents;
            swDisplayStateSetting.Option = (int)swDisplayStateOpts_e.swSpecifyDisplayState;
            displayStateNames[0] = "<Default>_Display State 1";
            swDisplayStateSetting.Names = displayStateNames;
            //Set to part level
            swDisplayStateSetting.PartLevel = true;
 
            //Change the selected component's, USB_cover1, part-level
            //color from red to green in the specified display state of
            //the component part; this is not the overriding color level
            appearances = (object)swModelDocExt.get_DisplayStateSpecMaterialPropertyValues(swDisplayStateSetting);
            appearancesArray = (object[])appearances;
            swAppearanceSetting = (AppearanceSetting)appearancesArray[0];
            red_rgb = 0;
            green_rgb = 255;
            blue_rgb = 0;
            newColor = Math.Max(Math.Min(red_rgb, 255), 0) + Math.Max(Math.Min(green_rgb, 255), 0) * 16 * 16 + Math.Max(Math.Min(blue_rgb, 255), 0) * 16 * 16 * 16 * 16;
            swAppearanceSetting.Color = newColor;
            newAppearanceSetting[0] = swAppearanceSetting;
            swModelDocExt.set_DisplayStateSpecMaterialPropertyValues(swDisplayStateSetting, newAppearanceSetting);
 
 
            //Close the assembly document without saving
            //changes
            swApp.CloseDoc("usb_flash_drive1");
 
            //Open the assembly component USB_cover1 as a part document
            fileName = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\appearances\\usb_cover1.sldprt";
            swModelDoc = (ModelDoc2)swApp.OpenDoc6(fileName, (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);
            swModelDocExt = (ModelDocExtension)swModelDoc.Extension;
            swConfigMgr = (ConfigurationManager)swModelDoc.ConfigurationManager;
            swConfig = (Configuration)swConfigMgr.ActiveConfiguration;
 
            swComponents[0] = null;
            swComponents[0] = swConfig.GetRootComponent3(true);
 
            swModelDoc.ClearSelection2(true);
 
            //Get display state
            swDisplayStateSetting = null;
            swDisplayStateSetting = (DisplayStateSetting)swModelDocExt.GetDisplayStateSetting((int)swDisplayStateOpts_e.swAllDisplayState);
            swDisplayStateSetting.Entities = swComponents;
            swDisplayStateSetting.Option = (int)swDisplayStateOpts_e.swSpecifyDisplayState;
            displayStateNames[0] = "<Default>_Display State 1";
            swDisplayStateSetting.Names = displayStateNames;
 
            System.Diagnostics.Debugger.Break();
            //Examine the graphics area
            //Press F5 to continue
 
            //Change color of selected component in specified display state
            //from default red to green; this is the overriding color
            appearances = (object)swModelDocExt.get_DisplayStateSpecMaterialPropertyValues(swDisplayStateSetting);
            appearancesArray = (object[])appearances;
            swAppearanceSetting = (AppearanceSetting)appearancesArray[0];
            red_rgb = 0;
            green_rgb = 255;
            blue_rgb = 0;
            newColor = Math.Max(Math.Min(red_rgb, 255), 0) + Math.Max(Math.Min(green_rgb, 255), 0) * 16 * 16 + Math.Max(Math.Min(blue_rgb, 255), 0) * 16 * 16 * 16 * 16;
            swAppearanceSetting.Color = newColor;
            newAppearanceSetting[0] = swAppearanceSetting;
            swModelDocExt.set_DisplayStateSpecMaterialPropertyValues(swDisplayStateSetting, newAppearanceSetting);
 
            System.Diagnostics.Debugger.Break();
            //Examine the graphics area
            //Press F5 to continue
 
            //Close the part document without saving
            //changes
            swApp.CloseDoc("usb_cover1");
 
        }
 
        /// <summary>
        /// The SldWorks swApp variable is pre-assigned for you.
        /// </summary>
        public SldWorks swApp;
 
 
    }
}
//This example shows how to get a model's scene and get and set some scene properties.

//----------------------------------------------------------------------------
// Preconditions:
// 1. Open a model document.
// 2. Open an Immediate window.
//
// Postconditions: Inspect the Immediate window.
// ---------------------------------------------------------------------------
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
namespace Scene_CSharp.csproj
{
    partial class SolidWorksMacro
    {
 
        SWScene Scene;
        ModelDoc2 swModel;
        Configuration swConfig;
        MathPoint swPoint;
        MathVector swVector;
        double[] point;
        double[] vect;
 
        public void Main()
        {
            swModel = (ModelDoc2)swApp.ActiveDoc;
 
            swConfig = (Configuration)swModel.GetActiveConfiguration();
            Debug.Print("Configuration: " + swConfig.Name);
 
            Scene = swConfig.GetScene();
 
            string P2SFilename = null;
            Scene.GetP2SFileName(ref P2SFilename);
            Debug.Print("Scene file: " + P2SFilename);
 
            Debug.Print("Scene background top gradient color: " + Scene.BackgroundTopGradientColor);
            Debug.Print("Scene background bottom gradient color: " + Scene.BackgroundBottomGradientColor);
 
            Scene.GetFloorNormal(ref swPoint, ref swVector);
            point = (double[])swPoint.ArrayData;
            Debug.Print("Scene floor normal point: " + point[0] + ", " + point[1] + ", " + point[2]);
            vect = (double[])swVector.ArrayData;
            Debug.Print("Scene floor normal vector: " + vect[0] + ", " + vect[1] + ", " + vect[2]);
 
            Scene.BackgroundType = (int)swSceneBackgroundType_e.swBackgroundType_UseEnvironment;
            Debug.Print("Type of scene background as defined in swSceneBackgroundType_e: " + Scene.BackgroundType);
            Debug.Print("Scene background environment image file: " + Scene.BackgroundEnvImage);
            Debug.Print("Scene background image file: " + Scene.BackgroundImage);
            Debug.Print("Scene environment rotation: " + Scene.EnvironmentRotation);
            Scene.FitToSWWindow = true;
            Debug.Print("Stretch to fit in SOLIDWORKS window? " + Scene.FitToSWWindow);
            Debug.Print("Scale the scene floor uniformly? " + Scene.FixedAspectRatio);
            Debug.Print("Flip the scene floor direction? " + Scene.FloorDirection);
            Debug.Print("Automatically resize the scene floor based on the model bounding box? " + Scene.FloorAutoSize);
            Debug.Print("Distance between scene floor and model: " + Scene.FloorOffset);
            Debug.Print("Flip the scene floor offset direction? " + Scene.FloorOffsetDirection);
            Scene.FloorReflections = true;
            Debug.Print("Show model reflections on the scene floor? " + Scene.FloorReflections);
            Debug.Print("Scene floor rotation: " + Scene.FloorRotation);
            Debug.Print("Show model shadows on the scene floor? " + Scene.FloorShadows);
            Debug.Print("Keep the scene background when changing the scene? " + Scene.KeepBackground);
            Scene.FlattenFloor = true;
            Debug.Print("Flatten the scene floor of the spherical environment? " + Scene.FlattenFloor);
            Debug.Print("Horizon height: " + Scene.HorizonHeight);
            Debug.Print("Environment size: " + Scene.EnvironmentSize);

 
        }
 
        public SldWorks swApp;
 
    }
}
//This example shows how to add a derived configuration for each existing configuration.

//---------------------------------------------------------------------------
// Preconditions: Open a part or assembly.
//
// Postconditions: For each configuration, adds and selects a derived 
// configuration.
//
// NOTE: IConfigurationManager::AddConfiguration returns
// Nohting or null if the new configuration already exists.
//---------------------------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
namespace SelectConfiguration_CSharp.csproj
{
    partial class SolidWorksMacro
    {

        public void Main()
        {
            ModelDoc2 swModel = default(ModelDoc2);
            string[] vConfigNameArr = null;
            
            Configuration swConf = default(Configuration);
            ConfigurationManager swConfMgr = default(ConfigurationManager);
            Configuration swDerivConf = default(Configuration);
            bool bRet = false;
            int i;

            swModel = (ModelDoc2)swApp.ActiveDoc;
            swConfMgr = swModel.ConfigurationManager;
            swConf = swConfMgr.ActiveConfiguration;

            vConfigNameArr = (string[])swModel.GetConfigurationNames();

            for (i = 0; i <= vConfigNameArr.GetUpperBound(0); i++)  {
                swConf = (Configuration)swModel.GetConfigurationByName(vConfigNameArr[i]);

                // Nothing or null if (derived) configuration already exists
                swDerivConf = swConfMgr.AddConfiguration(swConf.Name + " Derived", "Derived comment", "Derived alternate name", 1, swConf.Name, "Derived description");
                bRet = swDerivConf.Select2(true, null);
            }

        }


        public SldWorks swApp;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值