iCAx开思网

标题: CAA如何引用VB或者VBA程序 [打印本页]

作者: xinghesnak    时间: 2005-11-15 10:25
标题: CAA如何引用VB或者VBA程序
诸位大哥,CAA如何应用VBA或者VB程序,而且能设置好接口..以后便于在工具条中增加VB编的程序,谢谢!
作者: xinghesnak    时间: 2005-11-16 08:08
顶起来,大哥帮忙!
作者: xinghesnak    时间: 2005-11-16 16:43
唉,问题太难了,没有人会.........
作者: wolfsky1982    时间: 2005-11-16 18:27
xinghesnak ,你QQ多少?我QQ是35767213,希望能和你探讨
作者: xinghesnak    时间: 2005-11-17 08:11
我的QQ:36443461,共同进步吧!
作者: xacf    时间: 2005-11-17 08:13
vb程序做成ACTIVX 即可。
作者: xinghesnak    时间: 2005-11-17 08:32
xacf,你的意思是用VC引用VB做成的Active控件,这种方法在纯VC里是可以,可是在CAA里不知道行不行,xacf,你试过吗??
作者: hick    时间: 2005-11-17 09:50
顶一下

CAA 可以调用VBA的接口不?
作者: xinghesnak    时间: 2005-11-17 09:58
我也看过acoka兄的<CAA 如何为C++添加VB的interface>这篇文章,小弟水平不够,看不太懂...望高手们明示啊!
CAA应该可以调用VBA接口的........
作者: hick    时间: 2005-11-17 10:13
原帖由 xinghesnak 于 2005-11-17 09:58 发表
CAA应该可以调用VBA接口的........


如何调用,这个问题困惑了我好久,一直没弄明白
作者: xinghesnak    时间: 2005-11-17 13:22
顶起来!
作者: xinghesnak    时间: 2005-11-18 08:13
高手们再不帮忙,就顶不动了.......
作者: hick    时间: 2005-11-18 09:27
哎,就是顶死也没用地

经验谈
作者: saeba    时间: 2005-11-18 14:45
看不下去了,跳出来说两句。
首先,我想不出来你要在CATIA下用的VB/VBA是些什么样的程序?
Macro做不了吗?
也许是带一些自定义UI的?
从CATIA调用VB的程序,我能想出来的也就是以下这几个方法:
1。通过Macro调用VB程序,而Macro可以用Tool->Customize加到工具栏上,
如果可行的话,就好像通过工具条按钮直接调用VB程序一样。
只是最关键的,Macro(VBscript/CATScript)能不能调用VB程序,我不清楚。
2.用CAA做一个command,在command里实例化VB做的OCX,
但这需要用window的nativeAPI(CoCreateInstance之类的),不能用在Unix环境不说,RADE是否允许你链接windows API也是回事。。。
3。独立的VB程序通过后台与CATIA通信是否也可行?会用到BackBone
但是VB端的BackBone怎么写?我不知道

以上都是臆测,如有偏差,权当时误导好了。:)
手头没有VB环境,没法测试,否则还是有点兴趣的
毕竟用VB已经是很久以前的事了,有机会还想重温一下。。。
作者: HNBoTree    时间: 2005-11-18 15:17
CATIAxxxx的一般就是VBA的接口,跟其他的接口调用是一样的。
作者: xacf    时间: 2005-11-18 17:18
原帖由 xinghesnak 于 2005-11-17 08:32 发表
xacf,你的意思是用VC引用VB做成的Active控件,这种方法在纯VC里是可以,可是在CAA里不知道行不行,xacf,你试过吗??

caa 的基础还是VC。不过是VC上加了几个包。CAA不是独立的。不用多说:这种应用是不能用在UNIX上。

[ 本帖最后由 xacf 于 2005-11-18 17:30 编辑 ]
作者: xacf    时间: 2005-11-18 17:26
看不下去了,跳出来说两句。
首先,我想不出来你要在CATIA下用的VB/VBA是些什么样的程序?
Macro做不了吗?
也许是带一些自定义UI的?
从CATIA调用VB的程序,我能想出来的也就是以下这几个方法:
1。通过Macro调用VB程序,而Macro可以用Tool->Customize加到工具栏上,
如果可行的话,就好像通过工具条按钮直接调用VB程序一样。
只是最关键的,Macro(VBscript/CATScript)能不能调用VB程序,我不清楚。 XACF SAY:可以,以验证。
2.用CAA做一个command,在command里实例化VB做的OCX,
但这需要用window的nativeAPI(CoCreateInstance之类的),不能用在Unix环境不说,(XACF SAY:对!!仅能在WIN。),RADE是否允许你链接windows API也是回事。。。 XACF SAY:完全可以。用基本C
3。独立的VB程序通过后台与CATIA通信是否也可行?会用到BackBone
但是VB端的BackBone怎么写?我不知道。 XACF SAY:可以,如果不会BackBone,使用OLE也可。我用过OLE。

以上都是臆测,如有偏差,权当时误导好了。:)
手头没有VB环境,没法测试,否则还是有点兴趣的
毕竟用VB已经是很久以前的事了,有机会还想重温一下。。。
作者: xinghesnak    时间: 2005-11-19 14:52
高手们不了解情况啊,因为用VBA开发工具条,如果用到的话,需要人工添加,很麻烦...如果用CAA开发个工具条,那么CATIA启动便可自动加载了.为什么不连程序一块用CAA开发呢?
    原因之一,是我们开发CATIA的几个人在CAA方面知识甚少,不能短时间内开发出应用程序.只能采用CAA开发工具条+VBA开发程序的模式,再边工作边学习CAA了
    原因只二,是我们已经用VBA开发了一部分程序,如果重新再用CAA开发一遍,费时费工....
   saeba兄,我们开发的VBA程序都是很浅的东西,我们公司对CATIA开发也要求不高,用的就是CATIA的MACRO的Viral Basic编辑器,^_^
   我不想把VB做的东西做成OCX控件方式加入到CAA中,想做成EXE,然后用ShellExecute执行它,不知道高手们觉得有没有可行性啊??
作者: xinghesnak    时间: 2005-11-21 14:25
顶啊,顶啊,何时顶到头^_^
作者: xinghesnak    时间: 2005-11-22 14:27
不顶了,没有人会啊!
作者: saeba    时间: 2005-11-22 15:05
xinghesnak, 怎么还不会呢?
其实你如果仔细看了我和XACF的帖子就知道该怎么做了呀:
写一个Macro,在Macro中调用你的VB/VBA程序,
在写一个CAA工具条,加一个command,在这个command中调用你的那个Macro
这样不就可以了吗?
CATScriptUtilities::ExecuteScript()可以用来在command中调用Macro
至于在Macro中怎么调VB/VBA,你就要问XACF了,我不熟

XACF:请你告诉我们怎么在Macro中调VB/VBA?
作者: xinghesnak    时间: 2005-11-23 08:19
saeba兄,谢谢了,你写出上面的话我才明白怎么回事...我照你的方法试试!请教一下我用ShellExiecute执行VBA生成的EXE文件,是否有可行性??
XACF兄,怎么再Macro中如何调vb/vba,请赐教!
作者: xinghesnak    时间: 2005-11-23 13:34
唉,本人菜鸟啊,怎么在Command中,用CATScriptUtilities::ExecuteScript()啊?
是不是在文件头#include "CATScriptUtilities.h"然后在构造函数BuildGraph()中添加
ExecuteScript("D:\1.macro",catScriptLibraryTypeVBAProject,"",CATVariant,"CATMain",NULL,0,true);
是这样吗??
作者: xinghesnak    时间: 2005-11-25 13:10
轻轻的顶一下^_^
作者: xacf    时间: 2005-11-25 16:13
原帖由 xinghesnak 于 2005-11-23 08:19 发表
saeba兄,谢谢了,你写出上面的话我才明白怎么回事...我照你的方法试试!请教一下我用ShellExiecute执行VBA生成的EXE文件,是否有可行性??
XACF兄,怎么再Macro中如何调vb/vba,请赐教!




FRIST:
REGSVR32   GETPOINT.DLL



Language="VBSCRIPT"

Sub CATMain()
Dim o As GetPoint.Class1
Dim x As Double
Dim y As Double
Dim z As Double

Set o = CreateObject("GetPoint.class1")
o.x = 5
o.y = 15
o.z = 25

Set o1 = getObject(,"GetPoint.class1")

o.Start
x = o.x
y = o.y
z = o.z
'MsgBox " x= "  x+ " y= " + Str(y) + " z= " + Str(z)

Dim HybridBody0 As HybridBody
Set HybridBody0 = CATIA.ActiveDocument.Part.HybridBodies.Add

CATIA.ActiveDocument.Part.Update

Dim HybridShapePointCoord1 As HybridShapePointCoord

Set HybridShapePointCoord1 = CATIA.ActiveDocument.Part.HybridShapeFactory.AddNewPointCoord  ( x,y,z )

HybridBody0.AppendHybridShape HybridShapePointCoord1

CATIA.ActiveDocument.Part.Update

End Sub
作者: 歆韵    时间: 2011-2-14 08:53
HNBoTree 发表于 2005-11-18 15:17
CATIAxxxx的一般就是VBA的接口,跟其他的接口调用是一样的。


我找到CAA调用VBA的方法,但编译运行时编译不过去,加的头文件也不识别
作者: powermill    时间: 2011-5-10 00:31
把VB 的exe文件写成 catvbs文件 然后再做成TOOLBAR就可以了

Sub CATMain()
CATIA.SystemService.ExecuteBackgroundProcessus "D:\mymenu\FirstMold.exe"
End Sub
作者: walkerjiang    时间: 2012-6-20 08:13
歆韵 发表于 2011-2-14 08:53
我找到CAA调用VBA的方法,但编译运行时编译不过去,加的头文件也不识别

请问在哪里找到的,请赐教!




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3