问题标签 [catia]

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.

0 投票
2 回答
997 浏览

vba - vba/catvba 类实例化

我想在全球范围内声明类是我的例子:

我想使用看起来完全像这样的类 clsIEError:

这就是它的工作原理示例1:

但我的问题是我想在全球范围内拥有它示例2:

为什么使用公共默认方法不起作用?

0 投票
1 回答
1521 浏览

catia - 如何让我的 Excel 宏与 CATIA V6 交互?

我创建了一个 Excel 宏,它使用 Excel 数据在 CATIA V5 中创建几何图形。我现在正试图弄清楚如何使它与 CATIA V6 一起工作。我不知道让它找到我在 CATIA 中打开的部分的命令。我找不到任何 CATIA V6 宏的示例代码。有谁知道去哪里找到一个示例 CATIA V6 宏?

0 投票
3 回答
5274 浏览

vb.net - 在 VB.Net 中获取 COM 对象的特定实例

我正在.Net 中编写一个 Windows 窗体应用程序来列出第三方 CAD/CAM 软件(在本例中为 CATIA)的所有正在运行的实例,并让用户选择其中一个来执行几个自动化任务。为了执行自动化任务,我需要获取 COM 对象的特定实例 - 与 Getobject() 相比,它给了我一个非特定的 COM 实例。有没有办法使用窗口句柄或任何其他方法获取特定的 COM 实例?

更新:正如雷蒙德所说,所有 COM 对象都没有单一的解决方案;但是我设法使用以下代码获取 CATIA COM 对象(使用 ROT 填充所有 CATIA COM 实例名称的列表):

但是,所有 CATIA 实例均指加载的第一个 CATIA 应用程序。不知道为什么,有人吗?

0 投票
1 回答
2739 浏览

c# - 启动应用程序时 C# Windows 服务 COM 异常 80080005

我创建了一个尝试启动应用程序的 Windows 服务(在本例中为 CATIA)。

我使用以下代码:

当我的服务尝试启动应用程序时,我收到以下错误:

System.Runtime.InteropServices.COMException (0x80080005):检索具有 CLSID {87FD6F40-E252-11D5-8040-0010B5FA1031} 的组件的 COM 类工厂失败,原因是以下错误:80080005. at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) at System.Activator.CreateInstance (类型类型,布尔非公共)在 CATIA.CATIA.GetApplicationObject(String ProgId)

重要提示:当我将此代码作为 Windows 应用程序而不是 Windows 服务运行时,一切正常。我还尝试先启动 CATIA 并让它在后台运行,但我的服务无法捕获它。

我使用本地系统运行服务,并且选中了“与桌面交互”框。

我的 ProgId 是 CATIA.Application,正如我所说,当我将它作为应用程序而不是服务运行时它可以工作。

知道是什么原因造成的吗?

0 投票
1 回答
896 浏览

arrays - vba(catia)从数组中销毁对象

我有一个关于通过数组从标准和自定义类中销毁对象的问题,这是示例:

使用它们后,我想在最后销毁它们以从内存中释放它们,但我想避免使用

我想用以下方法摧毁它们:

这里是 sub 可能会这样做:

但不幸的是,如果我检查“销毁”元素是否真的免费,答案不是,只有选定元素的副本被设置为空。对象像 ByVal 一样传递给数组。

0 投票
3 回答
2345 浏览

vba - Catia v5 VBA,StartCommand“约束”没有给出预期的结果

我正在尝试在 Catia 中创建一个工具栏。此工具栏(基于 VBA 表单)将具有启动 Catia 命令(除其他外)的按钮。我试图启动的命令之一是“约束”命令(它应该允许您在草图工作台中为草图元素放置尺寸)。

我查看了命令列表(视图->命令列表...),找到尺寸标注工具的“约束”和“约束框”的“约束...”(打开一个可以设置几何约束的框,这不是我想要的)。我试过这个(最简单的情况):

我还尝试在窗口底部的 Catia 命令字段中编写“c:Constraint”。

这些尝试都没有给我正在寻找的约束命令。相反,我得到“不可用的命令”,但如果我选择要约束的草图元素,我会得到“约束框”。

如何从 VBA 而不是“约束框”启动“约束”命令(用于尺寸)?

问候, 克里斯蒂安

编辑:修正了一些小的拼写错误

0 投票
0 回答
516 浏览

c# - 为什么相同 COM 项目的 Visual Studio 2010 VB 和 C# 调试输出不同?

如果这个问题已经得到解释,我深表歉意,但我已经搜索并没有找到我可以理解的答案。多年来,我一直在使用 VB.Net 来自动化 CATIA,方法是添加它们的库并调用公开的方法、属性等。我向 C#.Net 编写了一些基本代码,但很失望地发现对象没有在相同的环境中公开就像在 VB 中一样。我的意思是当在调试器或监视窗口中检查对象时,属性不会显示在 C# 中,但它们会显示在 VB 中。这使我几乎不可能在 C# 中调试 CATIA 自动化,这似乎不正确。一定是缺少了什么。我已将 COM 库添加到项目中,并将它们正确包含在标头中。智能感知正在工作,CATIA 对象的基本方法在监视/调试中可见,但并非所有方法和属性都是可见的,我无法通过在调试中手动键入 object.get_Name() 或类似内容来询问它们窗户。我附上了相同代码的两个监视窗口结果的图像。第一个来自 VB.Net,您可以看到有多少可用信息。第二个来自 C#.Net,您可以看到可用的信息非常少。如何在 C# 调试器中访问与我在用于 COM 互操作程序集的 VB 调试器中看到的相同级别的信息?我注意到的一件事可能是一个线索,那就是在 VB 中,有许多对象属性在 C# 中以 get_ 方法的形式出现。例如,VB 中的属性 Document.Name 在 C# 中被发现为 Document.get_Name()。

好的,所以网站不允许我发布图片,因为我“需要至少 10 个声望点”。希望有足够的问题描述继续下去。

0 投票
3 回答
1604 浏览

vba - CATIA VBA 在零件周围移动时保留约束

我有一个用 VBA 编写的 CATIA V5 宏,我在其中移动规范树中的各个部分。

但是当我这样做时,部件之间的约束就会丢失。我想保留这些限制。

但是,当我通过约束对象查找引用时,我只得到 BREP 的名称,而没有任何关于 BREP 实际属于哪个部分的信息。

关于我能做什么的任何提示?

0 投票
0 回答
555 浏览

javascript - 打开弹出窗口,保持在顶部但不在焦点上

我制作了一个弹出窗口,允许一些用户从一个方便的小界面运行脚本(实际上是 CATScript)。脚本在 Catia 中运行,它们需要 32 个链接,在我的弹出窗口中提供(丑陋但有用你知道吗?)

它工作正常,但弹出窗口不断被其他窗口隐藏。

所以我把它添加到我的标题中(在这个网站上找到):

哪个有效,但随后变得烦人:一旦您单击弹出窗口中的链接,它就会保持专注,并阻止用户在其他程序上输入评论。

所以我的需要是:把我的弹出窗口放在前面,“总是在上面”,但没有“焦点”。那可能吗?

PS:由于我公司的限制和代码实现,这只能在IE上运行(它完全被阻止,不能在其他浏览器上访问)。

提前致谢!

0 投票
1 回答
704 浏览

java - How to retrieve CATIA Part object with com4j for java

I’ve tried to use com4j to get the PartDocument of a Catia file but when I get the object it was a Document object and not a PartDocument object. By consequent I cannot access to the method “part” of my object. I try to cast Document to PartDocument but the system reaches a cast exception. I ve tried with java 7 x86 or 64 and end up with the same results.

  1. I generate the java code with

java -jar tlbimp.jar -o E:\testcatia\src -p catia InfTypeLib.tlb

java -jar tlbimp.jar -o E:\testcatia\src -p catia SMTypeLib.tlb

java -jar tlbimp.jar -o E:\testcatia\src -p catia PartTypeLib.tlb

java -jar tlbimp.jar -o E:\testcatia\src -p catia CATIAAppTypeLib.tlb

com4j has built classes and we have : Document and PartDocument (PartDocument extends Document)

  1. my program code

    Application app = COM4J.createInstance( catia.Application.class, "CATIA.Application" ); Documents docs=app.documents(); PartDocument partdoc = (PartDocument) docs.open(new Holder<>("E:\\test.CATPart")); Part part= partdoc.part();

exception : com.sun.proxy.$Proxy9 cannot be cast to catia.PartDocument

Has anyone faced this kind of issue before, and if so I would be very thankful for a solution.

I have tried the JACOB API and it is working. The Document has a correct instance of a PartDocument but the code is too difficult to manipulate