在此基础上学习
允许访问程序集中的组件。
属性
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::Name2
swApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swExtRefUpdateCompNames, false);
// Print original name of component
Debug.Print(" Original name of component = " + swComp.Name2);
// Change name of component
swComp.Name2 = "SW";
// Print new name of component
Debug.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 document
fileName = "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 subassembly
status = 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 component
Debug.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 component
Debug.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 assembly
fileName = "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 origin
nPt[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 assembly
fileName = "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 body
status = 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 body
retval = 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 annotation
swModel = (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 assembly
swAssembly = (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 part
swModel = (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 part
status = 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 assembly
swModel = (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 component
swObject = (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 component
swObject = (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 invisible
swApp.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 document
swModel = (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 PDF
Success = 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 name
swConfigMgr = (ConfigurationManager)swModel.ConfigurationManager;
swConfig = (Configuration)swConfigMgr.ActiveConfiguration;
activeConfigName = swConfig.Name;
//Create five exploded views in the active configuration
for (i = 0; i <= 4; i++)
{
swAssembly.CreateExplodedView();
}
//Get the name of each exploded view in the active configuration
//and show each exploded view
viewNames = (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 model
viewName = "";
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 suppressed
swAssembly = (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 event
swAssy = (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 selected
bRet = 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;
}
}