Vba 使用Solidworks宏构建STL文件的部件
我试图在Solidworks(2015)中编写一个宏,以获取一大组.STL文件,将它们加载到Solidworks中,并在部件中对齐它们 最初,我在solidworks上录制了一个宏,记录了我这样做的过程。我将加载一个.STL文件,从中创建一个程序集,然后加载其他.STL文件,保存它们,然后将它们添加到程序集。文件将自己完全对齐(我认为使用它们相对于原点的相对位置) 记录的代码如下所示:Vba 使用Solidworks宏构建STL文件的部件,vba,excel,solidworks,Vba,Excel,Solidworks,我试图在Solidworks(2015)中编写一个宏,以获取一大组.STL文件,将它们加载到Solidworks中,并在部件中对齐它们 最初,我在solidworks上录制了一个宏,记录了我这样做的过程。我将加载一个.STL文件,从中创建一个程序集,然后加载其他.STL文件,保存它们,然后将它们添加到程序集。文件将自己完全对齐(我认为使用它们相对于原点的相对位置) 记录的代码如下所示: Dim swApp as Object Dim boolstatus as Boolean Dim longs
Dim swApp as Object
Dim boolstatus as Boolean
Dim longstatus as long, longwarnings as long
Sub main()
Set swApp = Application.Solidworks
boolstatus = swApp.LoadFile2("FileLocation", "r")
Set Part = swApp.ActiveDoc
Dim myModelView as Object
Set myModelView = Part.ActiveView
myModelView.FrameLeft = 0
myModelView.FrameTop = 22
Set myModelView = Part.ActiveView
myModelView.FrameWidth = 1845
myModelView.FrameHeight = 935
longstatus = Part.SaveAs3("SaveLocation", 0, 2)
Set Part = swApp.NewDocument("AssemblyLocation", 0, 0, 0)
Set myModelView = Part.ActiveView
myModelView.FrameWidth = 1845
myModelView.FrameHeight = 935
boolstatus = Part.AddComponent(".SLDPRTfilelocation", -8.034...E-05, 1.036...E-04, -2.799...E-05)
swApp.ActivateDoc2 "DocName", False, longstatus
swApp.CloseDoc "DocName"
'^Repeats for more .STL files (just adds to assembly doesn't make assembly for each file)
此录制代码的有趣之处在于:
1) 尝试运行录制的代码不起作用(除非我关闭文件,然后用.OpenDoc6
再次打开它,.AddComponent
命令似乎不起作用)。2) 使用.AddComponent
将零件添加到部件时,需要添加零件几何中心的x、y、z坐标。当我记录一次一个手动将零件放入部件的宏时,我可以看到.STL文件几何中心的坐标
文件使用这些值在部件中完全对齐,因此可以安全地假定它们是正确的
Solidworks如何确定这些坐标值?是否有任何代码可用于确定它们
我在()中尝试了该代码,虽然它似乎适用于简单的结构,但当我使用该代码生成程序集时,部件没有对齐。我还将此代码生成的x、y、z坐标与我在录制的宏中看到的值进行了比较,但它们不匹配
因此,简而言之,我想创建一个宏,将许多.STL文件加载到solidworks部件中,并自动对齐。我可以手工正确地完成这项工作,但我不知道Solidworks在将每个.STL文件加载到部件中时如何确定其几何中心
我现在很困,所以如果你有任何想法,我将不胜感激 仅供参考,AddComponent()方法已过时,您应该使用AddComponent5(CompName、ConfigOption、NewConfigName、UseConfigForPartReferences、ExistingConfigName、X、Y、Z),其中XYZ是组件中心的坐标。XYZ坐标可能与部件和零件不同。我认为这需要额外的计算。