GetSectionProperties2 Method (IModelDocExtension)
But, I'll confess I'm new to VBA in Solidworks, but have a fair bit of experience with Excel. Sadly, nothing's working as I hoped or at all.
Ultimately, I want to iterate along a direction of a part, taking several section cuts, getting the Ixx and Iyy at each cut, and saving them to a single text file for post-processing.
The problem is that the part, a hollow tube, has cross-sectional area changes along the length of my part. So, as I progress up the tube, I need to get the current surface, take the "measurements" and then save them into a file.
So for the code line:
boolstatus = Part.Extension.SelectByID2("Unknown", "MANIPULATOR", -0.01254874606678, 0, -0.06175785285308, False, 0, Nothing, 0)
the y-component (0 in this case) is easy; that's my section cut position. However, the x and z will not be fixed.
Can you help me build this? Please.
If you want help with macro you are currently writing, then please read this so you know what information you need to provide for us to help you: How to ask a good question in the API forum
I would recommend breaking down your problem into smaller problems and posting about each one individually. People are usually more likely to help with clearly defined bite-sized problems rather than "How do I do X, Y, and Z?" (which is usually a serious programming effort)
If you are trying to do it all on your own, you will be spinning your wheels until you learn what I call the three pillars of SolidWorks API programming:
1. Basic programming (usually with VBA)
2. Understanding the SolidWorks API Help
3. Understanding the SolidWorks API Object model
I have an article that might help bring clarity to some of these topics here: 7 Mistakes New SolidWorks API Programmers Make
Hope this helps you get started.
Here is some sample code I tested on a tapered cylinder. The most important method(s) to fully understand are those related to CreateSectionViewData and CreateSectionView. This might get you started but as the others mentioned you will require a more in-depth knowledge of the API to turn this into a production tool.
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swModelViewMgr As SldWorks.ModelViewManager
Dim swSelMgr As SldWorks.SelectionMgr
Dim svData As SldWorks.SectionViewData
Dim plane1 As SldWorks.Feature
Dim boolstatus As Boolean
Dim sectionProps As Variant
Dim face1(0 To 0) As SldWorks.entity
Dim i As Integer
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set swModelViewMgr = swModel.ModelViewManager
Set swSelMgr = swModel.SelectionManager
Open "E:\test.txt" For Output As #1
For i = 1 To 5 '5 slices
boolstatus = swModelDocExt.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 1, Nothing, 0)
Set plane1 = swSelMgr.GetSelectedObject6(1, 0)
Set svData = swModelViewMgr.CreateSectionViewData()
svData.FirstPlane = plane1
svData.FirstOffset = i * 0.002 '2 mm slices
svData.Redraw = True
boolstatus = swModelViewMgr.CreateSectionView(svData)
Debug.Print " Section bodies are valid: " & boolstatus
boolstatus = swModelDocExt.SelectByID2("", "FACE", 0, 0, i * 0.002, False, 8, Nothing, swSelectOptionDefault)
Set face1(0) = swSelMgr.GetSelectedObject5(8)
sectionProps = swModelDocExt.GetSectionProperties2(face1(0))
Write #1, sectionProps(13) 'Write MOI to text file
HI Dave! There may be an app here that could help you! www.wappsy.net it's the only place that has 100% SolidWorks apps free to download
Hope you find one you like!
In order to understand how to use GetSectionProperties2 Method (IModelDocExtension) you first need to be able to understand the SW API object model or at least a basic understanding of the object model. Without that you will probably be a little lost. If you are really interested in learning how to program against the SW API I would suggest starting with the tutorials in SolidWorks. You can take it further by taking training from your VAR as well. You will want to have some basic programming skills to get the most out of it. You can write your code in VBA but you also have the option of VSTA which allows you to write your code in .net giving you a lot more capability. If you are feeling really ambitious you can even learn how to write your own SW add-ins unleashing the power of event based triggers.