Solidworks学习笔记-链接Solidworks
在此基础上学习
允许访问程序集中的组件。
属性
Name | Description | 备注 |
ComponentReference | Gets or sets a component reference for this component. | 获取或设置此组件的组件引用。 |
IMaterialPropertyValues | Gets or sets the material properties for the selected component in the active configuration. | 获取或设置活动配置中选定组件的材料属性。 |
IsGraphicsOnly | Gets whether this component is graphics only. | 获取此组件是否仅为图形。 |
IsSpeedPak | Gets whether the active configuration for this component is SpeedPak. | 获取此组件的活动配置是否为 SpeedPak。 |
IsVirtual | Gets whether this component is a virtual component.NOTE: This property is a get-only property. Set is not implemented. | 获取此组件是否为虚拟组件。注意:此属性是一个仅获取属性。 |
MaterialPropertyValues | Gets or sets the material properties for the selected component in the active configuration. | 获取或设置活动配置中选定组件的材料属性。 |
Name2 | Gets or sets the name of the selected component. | 获取或设置所选组件的名称。 |
PresentationTransform | Gets or sets the component transform. | 获取或设置组件转换。 |
ReferencedConfiguration | Gets or sets the active configuration used by this component. | 获取或设置此组件使用的活动配置。 |
ReferencedDisplayState2 | Gets or sets the active display state of this component. | 获取或设置此组件的活动显示状态。 |
Solving | Gets the Solve as option (rigid or flexible) of this component. | 获取该组件的 Solve as 选项(刚性或柔性)。 |
Transform2 | Gets or sets the component transform. | 获取或设置组件转换。 |
UseNamedConfiguration | Gets whether a specified configuration or the in-use/last active configuration is used. | 获取是使用指定配置还是使用中/上次活动配置。 |
Visible | Gets or sets the visibility state of this component. | 获取或设置此组件的可见性状态。 |
System.string ComponentReference {get; set;}
//This example shows how to get the name of a component to possibly use with a future //call to IModelDocExtension::SelectByID2, when selectively opening the assembly document //and specific components using ISldWorks::OpenDoc7 and IDocumentSpecification, etc. This //example also shows how to get and set a component reference.//--------------------------------------------------------------------
// Preconditions:
// 1. Open an assembly document.
// 2. Select an entity (face, edge, vertex, or loop) on any
// component in the graphics area.
// 3. Open the Immediate window.
//
// Postconditions:
// 1. Adds a component reference to the component to which the
// entity belongs.
// 2. Examine the Immediate window.
// 3. Locate the component to which the component reference was added
// in the FeatureManager design tree. If necessary, use the scrollbar
// at the bottom of the FeatureManager design tree to see the component
// reference.
//--------------------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
namespace GetSelectByIDStringComponent_CSharp.csproj
{partial class SolidWorksMacro{public void Main(){ModelDoc2 swModel = default(ModelDoc2);SelectionMgr swSelectionMgr = default(SelectionMgr);Entity swEntity = default(Entity);Component2 swComponent = default(Component2);swModel = (ModelDoc2)swApp.ActiveDoc;// Get the selected entity (i.e., face, edge, vertex, or loop) // and get the name of its component swSelectionMgr = (SelectionMgr)swModel.SelectionManager;swEntity = (Entity)swSelectionMgr.GetSelectedObject6(1, -1);swComponent = (Component2)swEntity.GetComponent();// Print the name of the component to which the // the selected entity belongs Debug.Print("Name of component to which the selected entity belongs: " + swComponent.GetSelectByIDString());// Set a component reference to this component swComponent.ComponentReference = "TestComponentReference";Debug.Print("Component reference added to the component to which the selected entity belongs: " + swComponent.ComponentReference);// Rebuild the assembly to see the component reference // beside the name of the component in the FeatureManager // design tree swModel.ForceRebuild3(true);}public SldWorks swApp;}
}
System.string Name2 {get; set;}
//This example shows how to traverse an assembly at the component and feature levels //using recursion.//--------------------------------------------------------------------------
// Preconditions:
// 1. Open an assembly document containing nested subassemblies.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Traverses the assembly.
// 2. Examine the Immediate Window.
//---------------------------------------------------------------------------using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
namespace RecursiveTraverseAssemblyCSharp.csproj
{public partial class SolidWorksMacro{public void TraverseFeatureFeatures(Feature swFeat, long nLevel){Feature swSubFeat;Feature swSubSubFeat;Feature swSubSubSubFeat;string sPadStr = " ";long i = 0;for (i = 0; i <= nLevel; i++){sPadStr = sPadStr + " ";}while ((swFeat != null)){Debug.Print(sPadStr + swFeat.Name + " [" + swFeat.GetTypeName2() + "]");swSubFeat = (Feature)swFeat.GetFirstSubFeature();while ((swSubFeat != null)){Debug.Print(sPadStr + " " + swSubFeat.Name + " [" + swSubFeat.GetTypeName() + "]");swSubSubFeat = (Feature)swSubFeat.GetFirstSubFeature();while ((swSubSubFeat != null)){Debug.Print(sPadStr + " " + swSubSubFeat.Name + " [" + swSubSubFeat.GetTypeName() + "]");swSubSubSubFeat = (Feature)swSubSubFeat.GetFirstSubFeature();while ((swSubSubSubFeat != null)){Debug.Print(sPadStr + " " + swSubSubSubFeat.Name + " [" + swSubSubSubFeat.GetTypeName() + "]");swSubSubSubFeat = (Feature)swSubSubSubFeat.GetNextSubFeature();}swSubSubFeat = (Feature)swSubSubFeat.GetNextSubFeature();}swSubFeat = (Feature)swSubFeat.GetNextSubFeature();}swFeat = (Feature)swFeat.GetNextFeature();}}public void TraverseComponentFeatures(Component2 swComp, long nLevel){Feature swFeat;swFeat = (Feature)swComp.FirstFeature();TraverseFeatureFeatures(swFeat, nLevel);}public void TraverseComponent(Component2 swComp, long nLevel){object[] vChildComp;Component2 swChildComp;string sPadStr = " ";long i = 0;for (i = 0; i <= nLevel - 1; i++){sPadStr = sPadStr + " ";}vChildComp = (object[])swComp.GetChildren();for (i = 0; i < vChildComp.Length; i++){swChildComp = (Component2)vChildComp[i];Debug.Print(sPadStr + "+" + swChildComp.Name2 + " <" + swChildComp.ReferencedConfiguration + ">");TraverseComponentFeatures(swChildComp, nLevel);TraverseComponent(swChildComp, nLevel + 1);}}public void TraverseModelFeatures(ModelDoc2 swModel, long nLevel){Feature swFeat;swFeat = (Feature)swModel.FirstFeature();TraverseFeatureFeatures(swFeat, nLevel);}public void Main(){ModelDoc2 swModel;ConfigurationManager swConfMgr;Configuration swConf;Component2 swRootComp;swModel = (ModelDoc2)swApp.ActiveDoc;swConfMgr = (ConfigurationManager)swModel.ConfigurationManager;swConf = (Configuration)swConfMgr.ActiveConfiguration;swRootComp = (Component2)swConf.GetRootComponent();System.Diagnostics.Stopwatch myStopwatch = new Stopwatch();myStopwatch.Start();Debug.Print("File = " + swModel.GetPathName());TraverseModelFeatures(swModel, 1);if (swModel.GetType() == (int)swDocumentTypes_e.swDocASSEMBLY){TraverseComponent(swRootComp, 1);}myStopwatch.Stop();TimeSpan myTimespan = myStopwatch.Elapsed;Debug.Print("Time = " + myTimespan.TotalSeconds + " sec");}/// <summary> /// The SldWorks swApp variable is pre-assigned for you. /// </summary> public SldWorks swApp;}}
This example shows how to change the name of a component.//-------------------------------------------------
// Preconditions:
// 1. Open an assembly document.
// 2. Select a component in the assembly.
// 3. Open the Immediate window.
// 4. Press F5.
//
// Postconditions:
// 1. The selected component's name is
// changed to SW.
// 2. Examine the Immediate window and
// FeatureManager design tree to verify.
//-------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;namespace ComponentName2CSharp.csproj
{partial class SolidWorksMacro{public void Main(){ModelDoc2 swModel = default(ModelDoc2);SelectionMgr swSelMgr = default(SelectionMgr);Component2 swComp = default(Component2);swModel = (ModelDoc2)swApp.ActiveDoc;swSelMgr = (SelectionMgr)swModel.SelectionManager;swComp = (Component2)swSelMgr.GetSelectedObjectsComponent3(1, 0);if (swComp == null){Debug.Print("Select a component and run the macro again.");return;}else{// swUserPreferenceToggle_e.swExtRefUpdateCompNames must be set to// false to change the name of a component using IComponent2::Name2swApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swExtRefUpdateCompNames, false);// Print original name of componentDebug.Print(" Original name of component = " + swComp.Name2);// Change name of componentswComp.Name2 = "SW";// Print new name of componentDebug.Print(" New name of component = " + swComp.Name2);}}/// <summary>/// The SldWorks swApp variable is pre-assigned for you./// </summary>public SldWorks swApp;}
}
System.string ReferencedDisplayState2 {get; set;}
//This example shows how to set the active display state of a referenced component.//--------------------------------------------------------
// Preconditions:
// 1. Open public_documents\samples\tutorial\driveworksxpress\mobile gantry.sldasm.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Selects leg<1>.
// 2. Gets the selected referenced component's active display state.
// 3. Sets the selected referenced component's active display state.
// 4. Examine the Immediate window, FeatureManager design tree,
// and graphics area.
//
// 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);ModelDocExtension swModelDocExtension = default(ModelDocExtension);Component2 swComponent = default(Component2);SelectionMgr swSelectionManager = default(SelectionMgr);bool status = false;swModel = (ModelDoc2)swApp.ActiveDoc;swModelDocExtension = (ModelDocExtension)swModel.Extension;status = swModelDocExtension.SelectByID2("leg-1@mobile gantry", "COMPONENT", 0, 0, 0, false, 0, null, 0);swSelectionManager = (SelectionMgr)swModel.SelectionManager;swComponent = (Component2)swSelectionManager.GetSelectedObjectsComponent4(1, -1);Debug.Print("Get active display state: " + swComponent.ReferencedDisplayState2);swComponent.ReferencedDisplayState2 = "<Default<As Machined>>_Display State 1";Debug.Print("Set active display state: " + swComponent.ReferencedDisplayState2);}/// <summary>/// The SldWorks swApp variable is pre-assigned for you./// </summary>public SldWorks swApp;}
}
System.int Solving {get;}
//This example shows how to find out if the selected component is resolved or suppressed, //hidden or visible, and whether or not it's a rigid or flexible subassembly. This //example also gets the persistent ID of the selected component.//---------------------------------------------------
// Preconditions:
// 1. Ensure that the specified assembly document
// to open exists.
// 2. Open the Immediate window.
// 3. Run the macro.
//
// Postconditions:
// 1. Opens the assembly document.
// 2. Selects the subassembly.
// 3. Prints to the Immediate window:
// * Paths to the assembly and subassembly documents
// * Whether the component is hidden, fixed,
// or suppressed
// * Component's persistent ID
// * Component's solving state
// 4. Examine the Immediate window.
//----------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;namespace GetComponentStateCSharp.csproj
{partial class SolidWorksMacro{public void Main(){ModelDoc2 swModel = default(ModelDoc2);ModelDocExtension swModelDocExt = default(ModelDocExtension);AssemblyDoc swAssy = default(AssemblyDoc);SelectionMgr swSelMgr = default(SelectionMgr);Component2 swComp = default(Component2);string fileName = null;bool status = false;int errors = 0;int warnings = 0;// Open assembly documentfileName = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\advdrawings\\98food processor.sldasm";swModel = (ModelDoc2)swApp.OpenDoc6(fileName, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);swModelDocExt = (ModelDocExtension)swModel.Extension;// Select subassemblystatus = swModelDocExt.SelectByID2("blade shaft-1@98food processor", "COMPONENT", 0, 0, 0, false, 0, null, 0);swSelMgr = (SelectionMgr)swModel.SelectionManager;swAssy = (AssemblyDoc)swModel;swComp = (Component2)swSelMgr.GetSelectedObjectsComponent3(1, 0);// Print to the Immediate window the path and state of the// selected componentDebug.Print("File = " + swModel.GetPathName());Debug.Print(" Component = " + swComp.Name2);Debug.Print(" Path = " + swComp.GetPathName());Debug.Print(" IsHidden = " + swComp.IsHidden(true));Debug.Print(" IsFixed = " + swComp.IsFixed());Debug.Print(" GetSuppression = " + swComp.GetSuppression());Debug.Print(" ID = " + swComp.GetID());// 0 = if subassembly is rigid// 1 = if subassembly is flexible// -1 = selected component is a part componentDebug.Print(" Solving = " + swComp.Solving);}/// <summary>/// The SldWorks swApp variable is pre-assigned for you./// </summary>public SldWorks swApp;}
}
MathTransform Transform2 {get; set;}
//This example shows how to transform a point from component space to assembly space.//--------------------------------------------------------------
// Preconditions:
// 1. Verify that the specified assembly document to open
// exists.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Opens the specified assembly document.
// 2. Selects a component.
// 3. Transforms the component's origin to a point in
// assembly space.
// 4. Examine the Immediate window.
//--------------------------------------------------------------using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;namespace Transform2.csproj
{public partial class SolidWorksMacro{public void Main(){MathUtility swMathUtil = default(MathUtility);ModelDoc2 swModel = default(ModelDoc2);ModelDocExtension swModelDocExt = default(ModelDocExtension);SelectionMgr swSelMgr = default(SelectionMgr);Component2 swComp = default(Component2);MathTransform swXform = default(MathTransform);double[] nPt = new double[3];object vPt = null;MathPoint swPt = default(MathPoint);bool bRet = false;int errors = 0;int warnings = 0;string fileName = null;// Open assemblyfileName = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\smartcomponents\\stepped_shaft.sldasm";swModel = (ModelDoc2)swApp.OpenDoc6(fileName, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);swModelDocExt = (ModelDocExtension)swModel.Extension;bRet = swModelDocExt.SelectByID2("stepped_shaft-1@stepped_shaft", "COMPONENT", 0, 0, 0, false, 0, null, 0);swMathUtil = (MathUtility)swApp.GetMathUtility();swSelMgr = (SelectionMgr)swModel.SelectionManager;swComp = (Component2)swSelMgr.GetSelectedObjectsComponent(1);swXform = (MathTransform)swComp.Transform2;// Point at component originnPt[0] = 0.0;nPt[1] = 0.0;nPt[2] = 0.0;vPt = nPt;swPt = (MathPoint)swMathUtil.CreatePoint(vPt);swPt = (MathPoint)swPt.MultiplyTransform(swXform);Debug.Print("File = " + swModel.GetPathName());Debug.Print(" Component = " + swComp.Name2 + " [" + swComp.GetPathName() + "]");Debug.Print(" Point in component = (" + nPt[0] * 1000.0 + ", " + nPt[1] * 1000.0 + ", " + nPt[2] * 1000.0 + ") mm");Debug.Print(" Point in assembly = (" + ((double[])swPt.ArrayData)[0] * 1000.0 + ", " + ((double[])swPt.ArrayData)[1] * 1000.0 + ", " + ((double[])swPt.ArrayData)[2] * 1000.0 + ") mm");}/// <summary>/// The SldWorks swApp variable is pre-assigned for you./// </summary>public SldWorks swApp;}
}
方法
Name | Description | 备注 |
AddPropertyExtension | Adds a property extension to this component. | 向该组件添加属性扩展。 |
DeSelect | Deselects this component. | 取消选择该组件。 |
EnumBodies3 | Gets the bodies in the component in a multibody part. | 获取多实体零件中组件中的实体。 |
EnumRelatedBodies | Creates an enumerated list of bodies. | 创建实体的枚举列表。 |
EnumSectionedBodies | Gets the sectioned bodies seen in the specified view and returns them in an enumerated list. | 获取在指定视图中看到的分段实体,并在枚举列表中返回它们。 |
FeatureByName | Gets the specified feature for this component. | 获取此组件的指定名称的特征。 |
FindAttribute | Finds an attribute on a component. | 查找组件上的属性。 |
FirstFeature | Gets the first feature in this component. | 获取此组件中的第一个功能。 |
GetBodies3 | Gets the bodies in this component. | 获取此组件中的主体。 |
GetBody | Gets the body that belongs to this instance of this component. | 获取属于此组件的此实例的主体。 |
GetBox | Gets the bounding box for component. | 获取组件的边界框。 |
GetChildren | Gets all of the children components of this component. | 获取此组件的所有子组件。 |
GetConstrainedStatus | Gets the constrained status of this component. | 获取此组件的约束状态。 |
GetCorresponding | Gets the corresponding object in the context of the assembly for a specific instance of the component. | 获取组件的特定实例的程序集上下文中的相应对象。 |
GetCorrespondingEntity | Gets the entity that corresponds with the Dispatch pointer in the context of the component. | 获取与组件上下文中的 Dispatch 指针对应的实体。 |
GetDecals | Gets the decals applied to this component. | 获取应用于此组件的贴花。 |
GetDecalsCount | Gets the number of decals applied to this component. | 获取应用于此组件的贴花数量。 |
GetDrawingComponent | Gets the drawing component for this component. | 获取此组件的绘图组件。 |
GetExcludeFromBOM2 | Gets whether this component is excluded from the bills of materials (BOMs) in the specified configurations. | 获取此组件是否从指定配置的物料清单 (BOM) 中排除。 |
GetHiddenUnloadedChildrenCount | Gets the number of hidden children components of this component that were not loaded when an assembly was opened selectively. | 获取在有选择地打开程序集时未加载的此组件的隐藏子组件的数量。 |
GetID | Gets the component ID for this component. | 获取此组件的组件 ID。 |
GetImportedPath | Gets the full path name of the model imported for this component. | 获取为此组件导入的模型的完整路径名。 |
GetMaterialIdName | Gets the material name for this component. | 获取此组件的材料名称。 |
GetMaterialPropertyValues2 | Gets the material properties for this component. | 获取此组件的材料属性。 |
GetMaterialUserName | Gets the user-visible name of the material for this component. | 获取此组件的材料的用户可见名称。 |
GetMates | Gets the mates for this component. | 获取此零部件的配合。 |
GetModelDoc2 | Gets the model document for this component. | 获取此组件的模型文档。 |
GetModelMaterialPropertyValues | Gets the material properties of this lightweight component in the specified configuration. | 获取此轻量级组件在指定配置中的材料属性。 |
GetModelTexture | Gets the texture applied to this lightweight component in the specified configuration. | 获取在指定配置中应用于此轻量级组件的纹理。 |
GetParent | Gets the parent component. | 获取父组件。 |
GetPathName | Gets the full path name for this component. | 获取此组件的完整路径名。 |
GetPropertyExtension | Gets the property extension on this component. | 获取此组件的属性扩展。 |
GetReferencedDisplayStates | Gets the display states of this component that are referenced by the specified assembly display state(s). | 获取由指定程序集显示状态引用的此组件的显示状态。 |
GetRenderMaterials2 | Gets the appearances applied to this component in the specified display states. | 获取在指定显示状态下应用于此组件的外观。 |
GetRenderMaterialsCount2 | Gets the number of appearances applied to this component in the specified display states. | 获取在指定显示状态下应用于此组件的外观数量。 |
GetSectionedBodies | Gets the sectioned bodies in the specified section view. | 获取指定剖视图中的剖切实体。 |
GetSelectByIDString | Gets the name of the component for possible use with IModelDocExtension::SelectByID2, for selectively opening a document using ISldWorks::OpenDoc7 and IDocumentSpecification, etc. | 获取可能与 IModelDocExtension::SelectByID2 一起使用的组件的名称,用于使用 ISldWorks::OpenDoc7 和 IDocumentSpecification 等选择性地打开文档。 |
GetSmartComponentData | Gets the features, components, and feature references of a Smart Component. | 获取智能组件的特征、组件和特征参考。 |
GetSpecificTransform | Get the collapsed or exploded transform of a component when the assembly is exploded. | 装配爆炸时获取组件的折叠或爆炸变换。 |
GetSuppression2 | Gets the suppression state of this component. | 获取此组件的压缩状态。 |
GetTessNorms | Gets the normal vector for each of the triangles, which make up the shaded picture tessellation for the component. | 获取每个三角形的法向量,这些三角形构成了组件的阴影图片细分。 |
GetTessTriangles | Gets the triangles that make up the shaded picture tessellation for this component. | 获取构成此组件的阴影图片细分的三角形。 |
GetTessTriStripEdges | Gets the edge IDs for the triangle strips. | 获取三角形条带的边 ID。 |
GetTessTriStripNorms | Gets the normal vector for each of the triangles, which make up the shaded picture tessellation for this component. | 获取每个三角形的法向量,这些三角形构成此组件的阴影图片细分。 |
GetTessTriStrips | Gets the vertices that make up the shaded picture tessellation for this component. | 获取构成此组件的着色图片细分的顶点。 |
GetTexture | Gets the texture applied to this component in the specified configuration. | 获取在指定配置中应用于此组件的纹理。 |
GetTotalTransform | Combines the original transform of this component with the presentation transform of this component. | 将此组件的原始转换与此组件的表示转换相结合。 |
GetUnloadedComponentNames | Gets the component's unloaded children components' path names, referenced configuration names, reasons why they are unloaded, document types, and names. | 获取组件已卸载的子组件的路径名称、引用的配置名称、卸载原因、文档类型和名称。 |
GetVisibility | Gets the visibility state for this component. | 获取此组件的可见性状态。 |
GetVisibilityInAsmDisplayStates | Gets the visibilities of this component in the specified assembly display state(s). | 获取此组件在指定装配显示状态下的可见性。 |
HasMaterialPropertyValues | Gets whether this component has an appearance. | 获取此组件是否具有外观。 |
HasUnloadedComponents | Gets whether this component has hidden or suppressed unloaded children components. | 获取此组件是否隐藏或抑制了卸载的子组件。 |
IFindAttribute | Finds an attribute on a component. | 查找组件上的属性。 |
IGetBody | Gets the body that belongs to this instance of this component. | 获取属于此组件的此实例的主体。 |
IGetBox | Gets the bounding box for component. | 获取组件的边界框。 |
IGetChildren | Gets all of the children components of this component. | 获取此组件的所有子组件。 |
IGetChildrenCount | Gets the number of children components for this component. | 获取此组件的子组件数。 |
IGetCorrespondingEntity | Gets the entity that corresponds with the Dispatch pointer in the context of the component. | 获取与组件上下文中的 Dispatch 指针对应的实体。 |
IGetDecals | Gets the decals applied to this component. | 获取应用于此组件的贴花。 |
IGetMaterialPropertyValues2 | Gets the material properties for this component. | 获取此组件的材料属性。 |
IGetMaterialPropertyValuesForFace | Gets the color of the specified face. | 获取指定面的颜色。 |
IGetModelMaterialPropertyValues | Gets the material properties of this lightweight component in the specified configuration. | 获取此轻量级组件在指定配置中的材料属性。 |
IGetTemporaryBodyID | Gets the current body tag ID, which is not a permanent ID. | 获取当前正文标签 ID,该 ID 不是永久 ID。 |
IGetTessNorms | Gets the normal vector for each of the triangles, which make up the shaded picture tessellation for the component. | 获取每个三角形的法向量,这些三角形构成了组件的阴影图片细分。 |
IGetTessTriangleCount | Gets the number of triangles that make up the shaded picture tessellation for this component. | 获取构成此组件的着色图片细分的三角形数。 |
IGetTessTriangles | Gets the triangles that make up the shaded picture tessellation for this component. | 获取构成此组件的阴影图片细分的三角形。 |
IGetTessTriStripEdges | Gets the edge IDs for the triangle strips. | 获取三角形条带的边 ID。 |
IGetTessTriStripEdgeSize | Gets the number of tessellation triangle edges. | 获取细分三角形边的数量。 |
IGetTessTriStripNorms | Gets the normal vector for each of the triangles, which make up the shaded picture tessellation for this component. | 获取每个三角形的法向量,这些三角形构成此组件的阴影图片细分。 |
IGetTessTriStrips | Gets the vertices that make up the shaded picture tessellation for this component. | 获取构成此组件的着色图片细分的顶点。 |
IGetTessTriStripSize | Gets the array size of floats required to contain the data returned when calling IComponent2::IGetTessTriStrips. | 获取调用 IComponent2::IGetTessTriStrips 时包含返回数据所需的浮点数组大小。 |
IGetVisibility | Gets the visibility state for this component. | 获取此组件的可见性状态。 |
IListExternalFileReferences2 | Gets the names and statuses of the external references on the component. | 获取组件上外部引用的名称和状态。 |
IRemoveMaterialProperty2 | Removes material property values from the component. | 从组件中删除材料属性值。 |
IsDisplayDataOutOfDate | Gets the status of the display data for this component. | 获取此组件的显示数据的状态。 |
IsEnvelope | Gets whether this component is an envelope. | 获取此组件是否为封套。 |
ISetMaterialPropertyValues2 | Sets the material properties for this component. | 设置此组件的材料属性。 |
ISetVisibility | Sets the visibility state for this component. | 设置此组件的可见性状态。 |
IsFixed | Gets whether the component is fixed or floating. | 获取组件是固定的还是浮动的。 |
IsHidden | Gets whether this component is hidden or suppressed. | 获取此组件是隐藏还是压缩。 |
IsLoaded | Gets whether a component is loaded. | 获取组件是否已加载。 |
IsMirrored | Gets whether this component is mirrored. | 获取此组件是否被镜像。 |
IsPatternInstance | Gets whether the component is a member of a pattern instance. | 获取组件是否是模式实例的成员。 |
IsRoot | Gets whether this component is the root component. | 获取此组件是否为根组件。 |
IsSmartComponent | Gets whether this component is a Smart Component. | 获取此组件是否为智能组件。 |
IsSuppressed | Gets whether this component is suppressed. | 获取此组件是否被压缩。 |
ListExternalFileReferences2 | Gets the names and statuses of the external file references on the component. | 获取组件上外部文件引用的名称和状态。 |
ListExternalFileReferencesCount | Gets the number of external references on the component. | 获取组件上的外部引用数。 |
MakeVirtual2 | Makes this component and optionally its child components virtual by saving them in the current assembly. | 通过将其保存在当前程序集中,使该组件及其子组件(可选)成为虚拟组件。 |
RemoveMaterialProperty2 | Removes the appearance from the component. | 从组件中删除外观。 |
RemovePresentationTransform | Removes the presentation transform from this component. | 从此组件中删除表示转换。 |
RemoveTexture | Removes the texture from this component in the specified configuration. | 在指定的配置中从此组件中移除纹理。 |
RemoveTextureByDisplayState | Removes the texture applied to this component in the specified display state. | 移除在指定显示状态下应用于此组件的纹理。 |
ResetPropertyExtension | Clears all of the values stored in the property extension. | 清除存储在属性扩展中的所有值。 |
SaveVirtualComponent | Saves a virtual component to an external file. | 将虚拟零部件保存到外部文件。 |
Select4 | Selects the component. | 选择组件。 |
SetCosmosWorksMaterial | Assigns the material to use during analysis to this component. | 将分析期间要使用的材料分配给该组件。 |
SetExcludeFromBOM2 | Sets whether to exclude this component from the bills of materials (BOMs) in the specified configurations. | 设置是否从指定配置的物料清单 (BOM) 中排除此组件。 |
SetMaterialIdName | Sets the material name for this component. | 设置此组件的材料名称。 |
SetMaterialPropertyValues2 | Sets the material properties for this component. | 设置此组件的材料属性。 |
SetMaterialUserName | Sets the material user name for this component. | 设置此组件的材质用户名。 |
SetReferencedDisplayStates | Sets the specified display state of this component to be referenced by the specified assembly display state(s). | 设置此组件的指定显示状态以被指定的程序集显示状态引用。 |
SetSmartComponentData | Sets the features, components, and feature references of a Smart Component. | 设置智能零部件的特征、零部件和特征参考。 |
SetSuppression2 | Sets the suppression state of this component. | 设置该组件的压缩状态。 |
SetTexture | Applies texture to this component in the specified configuration. | 将纹理应用于指定配置中的此组件。 |
SetTextureByDisplayState | Sets the texture applied to this component in the specified display state. | 在指定的显示状态下设置应用于此组件的纹理。 |
SetTransformAndSolve3 | Sets the transform and solves for the mates for this component. | 设置变换并求解此零部件的配合。 |
SetVisibility | Sets the visibility state for this component. | 设置此组件的可见性状态。 |
SetVisibilityInAsmDisplayStates | Sets the visibility of this component in the specified assembly display state(s). | 设置此零部件在指定装配显示状态中的可见性。 |
UpdateExternalFileReferences | Updates the external file references of this model. | 更新此模型的外部文件参考。 |
System.object GetBodies3( System.int BodyType,out System.object BodiesInfo)
//This example shows how to get the number of normal and user bodies in the components in //an assembly. //-----------------------------------------------------
// Preconditions:
// 1. Verify that the specified assembly document
// to open exists.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Gets and prints each component's name, number of
// solid bodies, body names, and body types
// to the Immediate window.
// 2. Right-click filterholder<1> in the FeatureManager
// design tree and click the Open Part button.
// Notice that there are no screw holes in the part.
// 3. Close the part and examine the filterholder<1>
// component, which is the orange, flat, circular
// component located on the front of the assembly
// in the graphics area. There are screw
// holes in the component.
// 4. Examine the filterholder<1>'s information in the
// Immediate window. Because the component was
// modified in the assembly, its body is identified
// as a user body.
//
// NOTE: Because this assembly document is used by
// elsewhere, do not save changes.
//-----------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
using System.Collections;
namespace GetBodies3Component2CSharp.csproj
{partial class SolidWorksMacro{public void Main(){ModelDoc2 swModel = default(ModelDoc2);AssemblyDoc swAssembly = default(AssemblyDoc);object[] vComponents = null;Component2 oneComponent = default(Component2);Body2 swBody = default(Body2);object[] vBodies = null;object vBodyInfo;int[] BodiesInfo = null;int BodyType = 0;int errors = 0;int warnings = 0;int i = 0;int j = 0;// Open this assembly swModel = (ModelDoc2)swApp.OpenDoc6("C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\toolbox\\lens_mount.sldasm", (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);swAssembly = (AssemblyDoc)swModel;// Get the components in the assembly vComponents = (object[])swAssembly.GetComponents(true);for (i = 0; i <= vComponents.Length - 1; i++){oneComponent = (Component2)vComponents[i];Debug.Print(" ");Debug.Print("Component name: " + oneComponent.Name2);// Get the solid bodies in the component vBodies = (object[])oneComponent.GetBodies3((int)swBodyType_e.swSolidBody, out (object)vBodyInfo);BodiesInfo = (int[])vBodyInfo;Debug.Print(" Number of solid bodies: " + (vBodies.Length + 1));for (j = 0; j <= vBodies.Length - 1; j++){Debug.Print(" Body number: " + (j + 1));swBody = (Body2)vBodies[j];Debug.Print(" Body name: " + swBody.Name);// Print the type of body BodyType = (int)BodiesInfo[j];switch (BodyType){case 0:Debug.Print(" Body type: user");break;case 1:Debug.Print(" Body type: normal");break;}}}}/// <summary> /// The SldWorks swApp variable is pre-assigned for you. /// </summary> public SldWorks swApp;}
}
System.object GetBody()
//This example shows how to display a temporary body.//-------------------------------------------------
// Preconditions:
// 1. Verify that the specified assembly document to
// open exists.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Opens the specified assembly document.
// 2. Selects a component for the temporary body.
// 3. Displays the temporary body.
// 4. Examine the graphics area and 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 Part = default(ModelDoc2);Body2 Body = default(Body2);Body2 BodyCopy = default(Body2);bool status = false;Component2 Component = default(Component2);MathUtility MathUtility = default(MathUtility);MathTransform MathXform = default(MathTransform);SelectionMgr SelMgr = default(SelectionMgr);double[] Xform = new double[16];object vXform = null;int retval = 0;string fileName = null;int errors = 0;int warnings = 0;Xform[0] = 1.0;Xform[1] = 0.0;Xform[2] = 0.0;Xform[3] = 0.0;Xform[4] = 1.0;Xform[5] = 0.0;Xform[6] = 0.0;Xform[7] = 0.0;Xform[8] = 1.0;Xform[9] = 0.15;Xform[10] = 0.0;Xform[11] = 0.0;Xform[12] = 1.0;Xform[13] = 0.0;Xform[14] = 0.0;Xform[15] = 0.0;vXform = Xform;MathUtility = (MathUtility)swApp.GetMathUtility();MathXform = (MathTransform)MathUtility.CreateTransform(vXform);//Open assemblyfileName = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\api\\assem1.sldasm";Part = (ModelDoc2)swApp.OpenDoc6(fileName, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);//Select component and create temporary bodystatus = Part.Extension.SelectByID2("TestPart1-1@assem1", "COMPONENT", 0, 0, 0, false, 0, null, 0);SelMgr = (SelectionMgr)Part.SelectionManager;Component = (Component2)SelMgr.GetSelectedObjectsComponent3(1, 0);Body = (Body2)Component.GetBody();BodyCopy = (Body2)Body.Copy();BodyCopy.ApplyTransform(MathXform);//Display temporary bodyretval = BodyCopy.Display3(Component, 255, (int)swTempBodySelectOptions_e.swTempBodySelectable);Debug.Print("Temporary body displayed (0 = success)? " + retval);Part.ViewZoomtofit2();}/// <summary>/// The SldWorks swApp variable is pre-assigned for you./// </summary>public SldWorks swApp;}
}
System.object GetCorresponding( System.object InputObject)
//This example shows how to get the corresponding sketch contour, sketch segments, and //annotation for a component in the context of the assembly.//------------------------------------------------------------------
// Preconditions:
// 1. Verify that:
// * specified part and assembly templates
// * C:\test
// exist.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Opens a new part and creates a sketch containing
// a sketch arc, sketch line, and a note.
// 2. Saves the part as C:\test\part1.sldprt.
// 3. Makes an assembly using the part document and saves
// the assembly as C:\test\assem1.sldasm.
// 4. Activates the part.
// a. Gets the persistent reference IDs of the sketch segments
// in the sketch contour.
// b. Gets the object ID of the note annotation.
// 5. Activates the assembly.
// a. Gets the persistent reference IDs of the sketch
// segments in the sketch contour in the context
// of the assembly.
// b. Gets the object ID of the note annotation in the context
// of the assembly.
// 6. Examine the Immediate window.
//------------------------------------------------------------------
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);AssemblyDoc swAssembly = default(AssemblyDoc);Component2 swComponent = default(Component2);SketchManager swSketchManager = default(SketchManager);SketchSegment swSketchSegment = default(SketchSegment);Note swNote = default(Note);Annotation swAnnotation = default(Annotation);TextFormat swTextFormat = default(TextFormat);ModelDocExtension swModelDocExt = default(ModelDocExtension);Feature swFeature = default(Feature);Sketch swSketch = default(Sketch);SketchContour swSketchContour = null;SelectionMgr swSelectionMgr = default(SelectionMgr);object swObject = null;object[] sketchSegments = null;object[] sketchContours = null;int nbrSketchContours = 0;int nbrSketchSegments = 0;int[] sketchSegmentIDs = null;int sketchSegmentType = 0;int annotationID = 0;int annotationType = 0;bool status = false;int errors = 0;int warnings = 0;int i = 0;int j = 0;//Create sketch containing a sketch arc,//sketch line, and annotationswModel = (ModelDoc2)swApp.NewDocument("C:\\ProgramData\\SolidWorks\\SolidWorks 2016\\templates\\Part.prtdot", 0, 0, 0);swSketchManager = (SketchManager)swModel.SketchManager;swSketchSegment = (SketchSegment)swSketchManager.CreateArc(-0.0756, 0.0, 0.0, -0.020568, 0.0, 0.0, -0.130614, 0.001423, 0.0, 1);swSketchSegment = (SketchSegment)swSketchManager.CreateLine(-0.130614, 0.001423, 0.0, -0.0756, -0.047042, 0.0);swNote = (Note)swModel.InsertNote("This is a sketch segment");if ((swNote != null)){swNote.LockPosition = false;swNote.Angle = 0;status = swNote.SetBalloon(0, 0);swAnnotation = (Annotation)swNote.GetAnnotation();if ((swAnnotation != null)){errors = swAnnotation.SetLeader3((int)swLeaderStyle_e.swUNDERLINED, 0, true, false, false, false);status = swAnnotation.SetPosition2(-0.002501468059071, 0.0826874163970699, 0);swTextFormat = null;status = swAnnotation.SetTextFormat(0, true, swTextFormat);}}swModel.ClearSelection2(true);swModel.WindowRedraw();swSketchManager.InsertSketch(true);swModelDocExt = swModel.Extension;status = swModelDocExt.SaveAs("C:\\test\\part1.sldprt", (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref errors, ref warnings);//Save part as assemblyswAssembly = (AssemblyDoc)swApp.NewDocument("C:\\ProgramData\\SolidWorks\\SolidWorks 2016\\templates\\Assembly.asmdot", 0, 0, 0);swComponent = (Component2)swAssembly.AddComponent5("C:\\test\\part1.SLDPRT", (int)swAddComponentConfigOptions_e.swAddComponentConfigOptions_CurrentSelectedConfig, "", false, "", -1.60609059776107E-05, 0, 8.47512097834624E-06);swModel = (ModelDoc2)swAssembly;swModelDocExt = (ModelDocExtension)swModel.Extension;status = swModelDocExt.SaveAs("C:\\test\\Assem1.SLDASM", (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref errors, ref warnings);//Get persistent reference IDs of sketch segments in sketch contour in partswModel = (ModelDoc2)swApp.ActivateDoc3("Part1.SLDPRT", false, (int)swRebuildOnActivation_e.swRebuildActiveDoc, ref errors);swModelDocExt = (ModelDocExtension)swModel.Extension;status = swModelDocExt.SelectByID2("Sketch1", "SKETCH", 0.0, 0.0, 0.0, false, 0, null, 0);swSelectionMgr = (SelectionMgr)swModel.SelectionManager;swFeature = (Feature)swSelectionMgr.GetSelectedObject6(1, -1);swSketch = (Sketch)swFeature.GetSpecificFeature2();Debug.Print(swModel.GetPathName());Debug.Print("");if ((swSketch != null)){sketchContours = (object[])swSketch.GetSketchContours();nbrSketchContours = sketchContours.Length;Debug.Print(" Number of sketch contours in " + swFeature.Name + " = " + nbrSketchContours);for (i = 0; i < sketchContours.Length; i++){swSketchContour = (SketchContour)sketchContours[i];if ((swSketchContour != null)){status = swSketchContour.Select2(false, null);}sketchSegments = (object[])swSketchContour.GetSketchSegments();nbrSketchSegments = sketchSegments.Length;for (j = 0; j < sketchSegments.Length; j++){swSketchSegment = (SketchSegment)sketchSegments[j];if ((swSketchSegment != null)){sketchSegmentIDs = (int[])swSketchSegment.GetID();sketchSegmentType = swSketchSegment.GetType();Debug.Print(" Persistent IDs = [" + sketchSegmentIDs[0] + ", " + sketchSegmentIDs[1] + "] and type = " + sketchSegmentType + " (0 = line; 1 = arc)");}}}}//Get object ID of note annotation in partstatus = swModelDocExt.SelectByID2("DetailItem1@Annotations", "NOTE", -0.00650517330771608, 0.0568327787544409, -0.035178659814812, false, 0, null, 0);swNote = (Note)swSelectionMgr.GetSelectedObject6(1, -1);swAnnotation = (Annotation)swNote.GetAnnotation();annotationType = swAnnotation.GetType();annotationID = swModelDocExt.GetObjectId(swAnnotation);Debug.Print("");Debug.Print(" Annotation ID = " + annotationID + " and type = " + annotationType + " (6 = note)");//Activate the assemblyswModel = (ModelDoc2)swApp.ActivateDoc3("Assem1.SLDASM", false, (int)swRebuildOnActivation_e.swRebuildActiveDoc, ref errors);swModelDocExt = (ModelDocExtension)swModel.Extension;status = swModelDocExt.SelectByID2("Part1-1@Assem1", "COMPONENT", 0, 0, 0, false, 0, null, 0);swSelectionMgr = (SelectionMgr)swModel.SelectionManager;swComponent = (Component2)swSelectionMgr.GetSelectedObject6(1, -1);Debug.Print("");Debug.Print(swModel.GetPathName());Debug.Print("");//Get corresponding sketch contour and sketch segments//and their persistent reference IDs in componentswObject = (object)swComponent.GetCorresponding(swSketchContour);swSketchContour = null;swSketchContour = (SketchContour)swObject;if ((swSketchContour != null)){status = swSketchContour.Select2(false, null);}sketchSegments = (object[])swSketchContour.GetSketchSegments();Debug.Print(" Number of sketch contours in " + swFeature.Name + " = " + nbrSketchContours);nbrSketchSegments = sketchSegments.Length;for (j = 0; j < sketchSegments.Length; j++){swSketchSegment = (SketchSegment)sketchSegments[j];if ((swSketchSegment != null)){sketchSegmentIDs = (int[])swSketchSegment.GetID();sketchSegmentType = swSketchSegment.GetType();Debug.Print(" Persistent IDs = [" + sketchSegmentIDs[0] + ", " + sketchSegmentIDs[1] + "] and type = " + sketchSegmentType + " (0 = line; 1 = arc)");}}//Get object ID of corresponding note annotation in componentswObject = (object)swComponent.GetCorresponding(swNote);swNote = null;swNote = (Note)swObject;if ((swNote != null)){swAnnotation = (Annotation)swNote.GetAnnotation();annotationType = swAnnotation.GetType();annotationID = swModelDocExt.GetObjectId(swAnnotation);Debug.Print("");Debug.Print(" Annotation ID = " + annotationID + " and type = " + annotationType + " (6 = note)");}}/// <summary>/// The SldWorks swApp variable is pre-assigned for you./// </summary>public SldWorks swApp;}
}
System.int GetID()
//This example shows how to get the component IDs of the components in an assembly and //subassemblies.//--------------------------------------------------------------------------
// Preconditions:
// 1. Open an assembly document containing nested subassemblies.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Traverses the assembly and subassemblies.
// 2. Gets the name and component ID of each component in the assembly and
// subassemblies.
// 3. Examine the Immediate window.
//---------------------------------------------------------------------------
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);ConfigurationManager swConfMgr = default(ConfigurationManager);Configuration swConf = default(Configuration);Component2 swRootComp = default(Component2);swModel = (ModelDoc2)swApp.ActiveDoc;swConfMgr = (ConfigurationManager)swModel.ConfigurationManager;swConf = (Configuration)swConfMgr.ActiveConfiguration;swRootComp = (Component2)swConf.GetRootComponent3(true);Debug.Print("File = " + swModel.GetPathName());if (swModel.GetType() == (int)swDocumentTypes_e.swDocASSEMBLY){TraverseComponent(swRootComp, 1);}}public void TraverseComponent(Component2 swComp, int nLevel){object[] vChildComp = null;Component2 swChildComp = default(Component2);string sPadStr = "";int i = 0;for (i = 0; i <= nLevel - 1; i++){sPadStr = sPadStr + " ";}vChildComp = (object[])swComp.GetChildren();for (i = 0; i <= vChildComp.Length - 1; i++){swChildComp = (Component2)vChildComp[i];Debug.Print(sPadStr + "Component name: " + swChildComp.Name2 + ", Component ID: " + swChildComp.GetID());TraverseComponent(swChildComp, nLevel + 1);}}/// <summary>/// The SldWorks swApp variable is pre-assigned for you./// </summary>public SldWorks swApp;}
}
System.string GetPathName()
//This example shows how to keep SOLIDWORKS invisible while activating SOLIDWORKS //documents, including assembly component files, and saving those documents as PDF files. //------------------------------------------------------
// Preconditions:
// 1. Verify that the specified assembly file exists.
// 2. Verify that c:\temp exists.
// 3. Open the Immediate window.
//
// Postconditions:
// 1. Saves the specified assembly file and its
// component files as PDF files to the c:\temp.
// 2. Examine the Immediate window and c:\temp.
//--------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
using System.IO;namespace Macro1CSharp.csproj
{public partial class SolidWorksMacro{public ModelDoc2 swModel;public ModelDocExtension swExtension;public void Main(){Frame pFrame;string Document = null;string Output = null;try{// Allow SOLIDWORKS to run in the background// and be invisibleswApp.UserControl = false;// If the following property is true, then the // SOLIDWORKS frame will be visible on a call to // ISldWorks::ActivateDoc2; so, set it to false swApp.Visible = false;// Keep SOLIDWORKS frame invisible when // ISldWorks::ActivateDoc2 is called pFrame = (Frame)swApp.Frame();pFrame.KeepInvisible = true;Document = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\advdrawings\\blade shaft.sldasm";Output = "c:\\temp\\";Debug.Print("--- Save files as PDF ---");SaveToPDF(Document, Output);swApp.CloseAllDocuments(true);Debug.Print("--- Done ---");// Show SOLIDWORKS frame and SOLIDWORKS pFrame.KeepInvisible = false;swApp.Visible = true;}catch {Debug.Print("Execution failed.");}}private void SaveToPDF(string docFileName, string outputpath){AssemblyDoc swAssembly = default(AssemblyDoc);int doctype = 0;int errors = 0;int warnings = 0;string modelpath = "";string modelFileName = "";string convFileName = "";bool Success = false;object[] vComponents = null;long i = 0;// Determine the type of SOLIDWORKS file based on // its filename extension string extension = "";extension = Path.GetExtension(docFileName);if (extension == ".sldprt"){doctype = (int)swDocumentTypes_e.swDocPART;}else if (extension == ".SLDPRT"){doctype = (int)swDocumentTypes_e.swDocPART;}else if (extension == ".sldasm"){doctype = (int)swDocumentTypes_e.swDocASSEMBLY;}else if (extension == ".SDLASM"){doctype = (int)swDocumentTypes_e.swDocASSEMBLY;}else if (extension == ".slddrw"){doctype = (int)swDocumentTypes_e.swDocDRAWING;}else if (extension == ".SLDDRW"){doctype = (int)swDocumentTypes_e.swDocDRAWING;}else{doctype = (int)swDocumentTypes_e.swDocNONE;}//Open documentswModel = (ModelDoc2)swApp.OpenDoc6(docFileName, doctype, (int)swOpenDocOptions_e.swOpenDocOptions_Silent | (int)swOpenDocOptions_e.swOpenDocOptions_ReadOnly, "", ref errors, ref warnings);if (swModel == null){Debug.Print("Failed to open document " + modelpath + ". Errors: " + errors);}// Activate the document, which should remain invisible // due to earlier call to IFrame::KeepInvisible swModel = (ModelDoc2)swApp.ActivateDoc2(docFileName, true, ref errors);// Build destination filename modelpath = swModel.GetPathName();modelFileName = Path.GetFileNameWithoutExtension(modelpath);convFileName = outputpath + modelFileName + ".pdf";swExtension = (ModelDocExtension)swModel.Extension;// Save document as PDFSuccess = swExtension.SaveAs(convFileName, (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref errors,
ref warnings);if (Success){Debug.Print("Document, " + modelpath + ", saved as " + convFileName + ". ");}else{Debug.Print("Document not saved: ");Debug.Print(" Errors: " + errors + modelpath + " as " + convFileName + ". ");}// Process all components if (doctype == (int)swDocumentTypes_e.swDocASSEMBLY){swAssembly = (AssemblyDoc)swModel;vComponents = (object[])swAssembly.GetComponents(true);for (i = 0; i < vComponents.Length; i++){Component2 swComponent = default(Component2);swComponent = (Component2)vComponents[i];SaveToPDF(swComponent.GetPathName(), outputpath);}}}/// <summary> /// The SldWorks swApp variable is pre-assigned for you. /// </summary> public SldWorks swApp;}
}
System.object GetSpecificTransform( System.bool IgnoreExplode)
//This example shows how to get the collapsed transform of a component in an exploded view.//----------------------------------------------------------------------------
// Preconditions:
// 1. Open public_documents\samples\tutorial\pdmworks\speaker.sldasm.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Gets the name of the active configuration.
// 2. Creates five exploded views for the active configuration.
// 3. Gets the name of each exploded view for the active configuration
// and shows each exploded view.
// 4. Gets the name of the exploded view shown in the model.
// 5. Selects a component and get its collapsed transform.
// 6. 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);ModelDocExtension swModelDocExt = default(ModelDocExtension);AssemblyDoc swAssembly = default(AssemblyDoc);ConfigurationManager swConfigMgr = default(ConfigurationManager);Configuration swConfig = default(Configuration);Component2 swComponent = default(Component2);SelectionMgr swSelectionMgr = default(SelectionMgr);MathTransform swTransform = default(MathTransform);string activeConfigName = null;string[] viewNames = null;string viewName = null;int i = 0;double[] transformArrayData = null;swModel = (ModelDoc2)swApp.ActiveDoc;swAssembly = (AssemblyDoc)swModel;//Get active configuration nameswConfigMgr = (ConfigurationManager)swModel.ConfigurationManager;swConfig = (Configuration)swConfigMgr.ActiveConfiguration;activeConfigName = swConfig.Name;//Create five exploded views in the active configurationfor (i = 0; i <= 4; i++){swAssembly.CreateExplodedView();}//Get the name of each exploded view in the active configuration//and show each exploded viewviewNames = (string[])swAssembly.GetExplodedViewNames2(activeConfigName);for (i = 0; i < viewNames.Length; i++){viewName = viewNames[i];swAssembly.ShowExploded2(true, viewName);}//Get the name of exploded view shown in modelviewName = "";swModelDocExt = swModel.Extension;swModelDocExt.IsExploded(out viewName);Debug.Print("Name of exploded view shown in model: " + viewName);//Select a component and get its collapsed transform swModelDocExt.SelectByID2("speaker_frame-1@speaker", "COMPONENT", 0, 0, 0, false, 0, null, 0);swSelectionMgr = (SelectionMgr)swModel.SelectionManager;swComponent = (Component2)swSelectionMgr.GetSelectedObjectsComponent4(1, -1);Debug.Print(" Name of component whose collapsed transform to get in the exploded view: " + swComponent.Name2);swTransform = (MathTransform)swComponent.GetSpecificTransform(true);transformArrayData = (double[])swTransform.ArrayData;Debug.Print(" Transform:");Debug.Print(" Rotate = (" + transformArrayData[0].ToString("###0.0#####") + ", " + transformArrayData[1].ToString("###0.0#####") + ", " + transformArrayData[2].ToString("###0.0#####") + ")");Debug.Print(" = (" + transformArrayData[3].ToString("###0.0#####") + " " + transformArrayData[4].ToString("###0.0#####") + " " + transformArrayData[5].ToString("###0.0#####") + ")");Debug.Print(" = (" + transformArrayData[6].ToString("###0.0#####") + " " + transformArrayData[7].ToString("###0.0#####") + " " + transformArrayData[8].ToString("###0.0#####") + ")");Debug.Print(" Translate = (" + transformArrayData[9].ToString("###0.0#####") + " " + transformArrayData[10].ToString("###0.0#####") + " " + transformArrayData[11].ToString("###0.0#####") + ")");}/// <summary>/// The SldWorks swApp variable is pre-assigned for you./// </summary>public SldWorks swApp;}
}
System.bool IsLoaded()
//This example gets whether the components in an assembly document are loaded. //---------------------------------------
// Preconditions:
// 1. Verify that the specified assembly document exists.
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Loads the Magnet-1 component.
// 2. Examine the Immediate window.
//
// NOTE: Because this assembly document is used elsewhere,
// do not save changes.
//---------------------------------------using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics; namespace IsLoadedComponent2CSharp.csproj
{public partial class SolidWorksMacro{public void Main(){ModelDoc2 swModel; DocumentSpecification swDocSpecification; string[] sComponents = new string[1]; object[] Components; Component2 swComponent = default(Component2);string sName; AssemblyDoc swAssembly; int longstatus; int longwarnings; int i; ConfigurationManager swConfigMgr;Configuration swConfig; // Selectively open speaker.sldasm// Load only Magnet-1 swDocSpecification = (DocumentSpecification)swApp.GetOpenDocSpec("C:\\Users\\Public\\Documents\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\pdmworks\\speaker.sldasm"); sComponents[0] = "Magnet-1@speaker"; Components = (object[])sComponents; swDocSpecification.ComponentList = Components; swDocSpecification.Selective = true; sName = swDocSpecification.FileName; swDocSpecification.DocumentType = (int)swDocumentTypes_e.swDocASSEMBLY; swDocSpecification.DisplayState = "Default_Display State-1"; swDocSpecification.UseLightWeightDefault = true; swDocSpecification.LightWeight = true; swDocSpecification.Silent = true; swDocSpecification.IgnoreHiddenComponents = true; swModel = (ModelDoc2)swApp.OpenDoc7(swDocSpecification); longstatus = swDocSpecification.Error; longwarnings = swDocSpecification.Warning; // Get whether the components in the // assembly document are loaded and suppressed; only // Magnet-1 should be loaded and not suppressedswAssembly = (AssemblyDoc)swModel; swConfigMgr = (ConfigurationManager)swModel.ConfigurationManager;swConfig = (Configuration)swConfigMgr.ActiveConfiguration;Components = (object[])swAssembly.GetComponents(true);for (i = 0; i < Components.Length; i++){swComponent = (Component2)Components[i];if ((swComponent.IsLoaded())){Debug.Print("Component: " + swComponent.Name + " is loaded.");}else{Debug.Print("Component: " + swComponent.Name + " is not loaded.");} Debug.Print (" Suppressed: " + swConfig.GetComponentSuppressionState(swComponent.Name));Debug.Print ("");}} /// <summary>/// The SldWorks swApp variable is pre-assigned for you./// </summary>public SldWorks swApp;}
}
System.bool IsSmartComponent()
//This example shows how to activate a Smart Feature in an assembly.//----------------------------------------------------------------------------
// Preconditions: Open public_documents\samples\tutorial\api\testSmartAssembly.sldasm.
//
// Postconditions:
// 1. Activates Smart Feature holecube-1 and creates two extruded cuts
// for the selected reference entity.
// 2. Displays Smart Feature holecube-1 in the FeatureManager design tree.
// 3. Creates Smart-Feature1 in component testpart100.
// 4. Expand and examine testpart100 and holecube-1 in the FeatureManager
// design tree.
//
// NOTE: Because the model is used elsewhere, do not save changes.
//---------------------------------------------------------------------------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 ActivateSmartFeature_CSharp.csproj{partial class SolidWorksMacro{Component2 comp;object comps;Object[] compsArray;SelectionMgr selMgr;object features;object featuresSelected;Boolean[] featuresSelectedArray;object components;object componentsSelected;Boolean[] componentsSelectedArray;object references;Object[] referenceArray;Face2 face;AssemblyDoc swAss;ModelDoc2 doc;bool boolstatus;int i;int j;public void Main(){swAss = (AssemblyDoc)swApp.ActiveDoc;comps = swAss.GetComponents(true);compsArray = (Object[])comps;doc = (ModelDoc2)swAss;selMgr = (SelectionMgr)doc.SelectionManager;for (i = 0; i <= compsArray.GetUpperBound(0); i++){comp = (Component2)compsArray[i];if (comp.IsSmartComponent()){if (comp.GetSmartComponentData(out features, out featuresSelected, out components, out componentsSelected, out references)){if ((featuresSelected == null) == false){featuresSelectedArray = (Boolean[])featuresSelected;for (j = 0; j <= featuresSelectedArray.GetUpperBound(0); j++){if (featuresSelectedArray[j] == false){featuresSelectedArray[j] = true;}}}if ((componentsSelected == null) == false){componentsSelectedArray = (Boolean[])componentsSelected;for (j = 0; j <= componentsSelectedArray.GetUpperBound(0); j++){if (componentsSelectedArray[j] == false){componentsSelectedArray[j - 1] = true;}}}boolstatus = doc.Extension.SelectByID2("", "FACE", -0.1054255613309, -0.008376708432593, 0.03086069829328, false, 0, null, 0);face = (Face2)selMgr.GetSelectedObject6(1, -1);referenceArray = (Object[])references;referenceArray[0] = face;DispatchWrapper[] arrRefsIn = new DispatchWrapper[1];arrRefsIn[0] = new DispatchWrapper(referenceArray[0]);boolstatus = comp.SetSmartComponentData(featuresSelected, componentsSelected, (arrRefsIn));}Debug.Print(comp.Name);}}}public SldWorks swApp;}}
System.bool Select4( System.bool Append, SelectData Data,System.bool ShowPopup)
//This example shows how to fire notifications when you://are about to rename a component.
//rename a component.
//---------------------------------------------------
// Preconditions:
// 1. Verify that these documents exist in public_documents\samples\tutorial\api:
// * beam_boltconnection.sldasm
// * beam with holes.sldprt
// 2. Open the Immediate window.
//
// Postconditions:
// 1. Open public_documents\samples\tutorial\api\beam_boltconnection.sldasm.
// 2. Fires pre-notification before appending
// 123 to each assembly component's name.
// 3. Fires notification when appending 123 to
// each assembly component's name.
// 4. Examine the FeatureManager design tree and 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;
using System.Collections;namespace Macro1CSharp.csproj
{public partial class SolidWorksMacro{public AssemblyDoc swAssy;public void Main(){ModelDoc2 swModel = default(ModelDoc2);ConfigurationManager swConfigMgr = default(ConfigurationManager);Configuration swConfig = default(Configuration);Component2 swRootComp = default(Component2);object[] Children = null;Component2 swChild = default(Component2);SelectionMgr swSelMgr = default(SelectionMgr);SelectData swSelData = default(SelectData);int ChildCount = 0;string oldName = null;string newName = null;bool bOldSetting = false;bool bRet = false;int i = 0;Hashtable openAssem = default(Hashtable);swModel = (ModelDoc2)swApp.ActiveDoc;swAssy = (AssemblyDoc)swModel;// Set up eventswAssy = (AssemblyDoc)swModel;openAssem = new Hashtable();AttachEventHandlers();swConfigMgr = swModel.ConfigurationManager;swConfig = swConfigMgr.ActiveConfiguration;swRootComp = swConfig.GetRootComponent3(true);bOldSetting = swApp.GetUserPreferenceToggle((int)swUserPreferenceToggle_e.swExtRefUpdateCompNames);swApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swExtRefUpdateCompNames, false);Children = (object[])swRootComp.GetChildren();ChildCount = Children.Length;swSelMgr = (SelectionMgr)swModel.SelectionManager;swSelData = (SelectData)swSelMgr.CreateSelectData();for (i = 0; i <= ChildCount - 1; i++){swChild = (Component2)Children[i];// Changing component name requires component to be selectedbRet = swChild.Select4(false, swSelData, false);oldName = swChild.Name2;newName = oldName + " 123";swChild.Name2 = newName;}swApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swExtRefUpdateCompNames, bOldSetting);}public void AttachEventHandlers(){AttachSWEvents();}public void AttachSWEvents(){swAssy.PreRenameItemNotify += this.swAssy_PreRenameItemNotify;swAssy.RenameItemNotify += this.swAssy_RenameItemNotify;}private int swAssy_PreRenameItemNotify(int EntityType, string oldName, string newName){Debug.Print("PRE-NOTIFICATION - about to rename component: " + oldName);return 0;}private int swAssy_RenameItemNotify(int EntityType, string oldName, string newName){Debug.Print("NOTIFICATION - rename component: " + newName);return 0;}/// <summary>/// The SldWorks swApp variable is pre-assigned for you./// </summary>public SldWorks swApp;}
}