问题标签 [solidworksapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
solidworks - 如何在装配体中查找配合实体的名称
如何在装配体中找到零部件的配合实体的名称?
也就是说,如果一个零部件在装配体中使用了两次,并且有两个重合配合使用(所述零部件的)同一个面与另一个零部件,我可以提取两个配合的相同名称吗?例如,如果有两个立方体 C1 和 C2,并且每个立方体的一侧与另一侧有一个配对。我们能得到一个伙伴的名字,比如 C1:Ida 和 C2:Idb 来识别立方体的一边吗?
这里给出了一个类似的问题:https ://forum.solidworks.com/thread/59399并且提供的建议解决方案是
MateEntity2::Reference->MateReference::Name
MateEntity2::Reference→MateReference::ReferenceEntity2→ModelDoc2::GetEntityName
我一直无法找到正确的调用顺序来获得这个。
此外,使用 Solidworks API 中给出的示例,示例https://help.solidworks.com/2021/English/api/sldworksapi/Get_Mate_Reference_Properties_Example_Csharp.htm似乎表明我们想要一个MateReference
但我无法正确投射从 aMateEntity.Reference
到任何可用的类型。
下面的一些代码提供了一个可重现的示例(在solidworks 21 中),其中许多尝试从aMateEntity.Reference
转换为另一种类型都失败了。感谢您的任何指示。
(这是交叉张贴在这里没有回应)
solidworks - SolidWorks - 从 STEP 文件创建零件文件
我是 SolidWorks 的初学者。我想知道如何找到一个 API,让我可以从随身携带的 STEP 文件创建 SolidWorks 零件文件。请分享一些指针。
谢谢,帕万。
vba - Solidworks 宏按钮 - 方法下拉列表为空
我在 SolidWorks VBA 中制作了两个宏(一个用于保存 PDF 文件,一个用于保存 DXF 文件),我想分享一些通用代码。这应该很容易,通过从其他模块(例如call module.sub()
)调用子过程。
我有两个模块(一个用于 PDF,一个用于 DXF),一个用于其他两个调用的“共享”模块。
这是我的一些 PDF 保存代码,位于“pdf”模块中。“dxf”模块是相同的,只是它调用shared_module.shared_sub("dxf")
而不是shared_module.shared_sub("pdf")
.
这是我的一些“shared_module”代码:
我的问题是,当我创建或编辑宏按钮时,“方法:”下拉菜单是空的......有什么想法吗?
如果我只有一个宏/模块/main() 子程序,它就会出现。但是当我添加其他模块时,它是空白的。
c# - Solidworks 插件。如何根据文档类型更改任务窗格中的内容?
我正在为 Solidworks 制作插件。我想根据打开的文档(零件、装配体或绘图)更改插件任务窗格的内容。我怎样才能做到这一点?当 SldWrks 启动时,它运行 TaskpaneHostUI 中描述的形式。在我看来,我应该为其他形式制作其他课程。对于打开的零件文档,我创建了 PartUI 类。应该更改内容,当事件触发时,我明白这一点。但是如何更改内容,我找不到。
vb.net - 在外部 API 接口中添加新成员和扩展方法
我正在使用 SOLIDWORKS API 在 Visual Studio 中构建 VB.NET 应用程序 - 我的应用程序通过 COM 连接到 SOLIDWORKS 应用程序,并使用各种 API 调用在其中执行一些操作。通过将项目参考添加到 SOLIDWORKS .dll 文件来访问 API。出于法律原因,这些文件必须嵌入到我的应用程序的可执行文件中。
这个问题并不特定于该 API,但我会尝试解释我想要做什么。有一个名为Body2的 SOLIDWORKS API 接口,用于控制 3D 空间中模型对象(实体)的操作。例如,Body2
接口提供了一个ApplyTransform方法,该方法允许通过对其应用MathTransform(变换矩阵)来移动或旋转某个物体:
现在,Body2
对象不存储这些转换矩阵——它们被应用和遗忘。但是,在我的应用程序中,我需要永久存储该信息,以便在某个时候,我可以反转所有转换,并将主体返回到它的原始位置。
因此,我想通过向 Body2 接口添加一个名为“CombinedTransformMatrix”的新属性来扩展它,这样每次调用时ApplyTransform
,我也可以更新该属性的值,例如:
当我最终想将身体恢复到原来的位置时,我可以调用:
理想情况下,扩展该ApplyTransform
方法会非常好,以便它会CombinedTransformMatrix
自动更新,例如:
(我知道我应该做一个扩展而不是覆盖,但我不知道怎么做)
如果这是可能的,那么我可以简化身体转换的代码,因为 CombinedTransformMatrix 会自动更新:
我非常喜欢这种解决方案,而不是从创建一些派生类Body2
,或者制作某种存储在对象CombinedTransformMatrix
外部的包装类Body2
。我想将该位存储在对象本身内。至于派生类,Visual Studio 甚至不允许我继承Body2
- 说“当它的程序集配置为嵌入互操作类型时,'Body2Class' 是不允许的。”。而且我必须嵌入这些 .dll 文件,否则我将不得不将它们与我的应用程序的 .exe 一起发送,这是 SOLIDWORKS 法律禁止的。
我想要的可能吗?我可以在不创建派生类的情况下将其添加CombinedTransformMatrix
到接口中吗?Body2
是否可以在ApplyTransform
不知道该方法是如何实现的情况下使用我的附加代码扩展该方法?
如果没有,实现我想要的下一个最佳解决方案是什么?就像我说的,我非常希望避免在 之外的包装器或其他变量Body2
,因为会有很多这些Body2
对象,它们将在应用程序的整个生命周期中持续存在,每个都有不同的转换,因此必须将它们的转换信息存储在外部他们自己会使我的代码严重复杂化。
c# - 在 CAD 文件的自定义属性中添加值会给我一个类型不匹配错误
在我的场景中,自定义属性首先出现在 CAD 文件中,其类型为SolidWorks.Interop.swconst.swCustomInfoType_e.swCustomInfoText
. 然后,我将其删除以将其重新添加为相同的类型
这是代码示例
调用Add3函数时,这是我得到的结果:3可以翻译为“自定义属性的指定值与指定类型不匹配”(来源)
该错误仅发生在包含许多其他具有相同类型的循环中的 1 个属性上。
- 经过测试的 Solidwork 版本:2022 和 2019。
- 经过测试的 Solidwork 互操作版本:23 和 33
- 该属性未在文档中标记为指向其他人的链接
我的问题:为什么我的代码会出现这个错误?我尝试了多个值来分配给该属性。
更新:CAD 是一个装配体