Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用Solidworks宏构建STL文件的部件_Vba_Excel_Solidworks - Fatal编程技术网

Vba 使用Solidworks宏构建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

我试图在Solidworks(2015)中编写一个宏,以获取一大组.STL文件,将它们加载到Solidworks中,并在部件中对齐它们

最初,我在solidworks上录制了一个宏,记录了我这样做的过程。我将加载一个.STL文件,从中创建一个程序集,然后加载其他.STL文件,保存它们,然后将它们添加到程序集。文件将自己完全对齐(我认为使用它们相对于原点的相对位置)

记录的代码如下所示:

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坐标可能与部件和零件不同。我认为这需要额外的计算。