我正在尝试在Solidworks(2015)中编写一个宏来获取一大组.STL文件,将它们加载到Solidworks中,然后将它们对齐到一个程序集中。
最初,我在solidworks上录制了一个宏,就是这样做的。我将加载一个.STL文件,从中创建一个程序集,然后加载其他.STL文件,保存它们,然后将它们添加到程序集中。文件将自己完美对齐(我认为通过使用它们与原点的相对位置)。
录制的代码如下所示:
EditText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
EditText.clearFocus();
}
return false;
}
});
此录制代码的有趣之处在于:
1)尝试运行录制的代码不起作用(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)
命令似乎不起作用,除非我关闭文件然后再用.AddComponent
打开它。 2)当使用.OpenDoc6
将零件添加到装配体时,它需要添加零件的几何中心的x,y,z坐标。当我记录一次一个地手动将零件放入装配体的宏时,我可以看到.STL文件几何中心的坐标。
文件使用这些值在装配中完美对齐,因此可以安全地假设它们是正确的。
Solidworks如何确定这些坐标值?我可以使用任何代码来确定它们吗?
我已尝试过(A method to calculate the centre of mass from a .stl (stereo lithography) file)中的代码,虽然它似乎适用于简单的结构,但是当我使用此代码生成程序集时,部件未对齐。我还将从此代码生成的x,y,z坐标与我在录制的宏中看到的值进行了比较,但它们不匹配。
因此,简而言之,我想创建一个宏来将许多.STL文件加载到solidworks程序集中并自动对齐。我可以手动正确地执行此操作,但我不知道Solidworks如何确定每个.STL文件的几何中心,因为它将它们加载到程序集中。
我现在很困惑,所以你可能会有任何想法,我将非常感激!