![]() |
大家再来讨论一下vb与vba的结合?使得不用依赖vba?
大家再来讨论一下vb与vba的结合?使得不用依赖vba?
www.dimcax.com 大家再来讨论一下vb与vba的结合?使得不用依赖vba? 之前我提出这个猜想.... 所来经过一段时间的学习,发觉这方案或许可行...... 不过首先要解决,vb如何像vba那样能识别特殊的对象命令(如 addline 这一类的命令,这是vb的没有也不能识别的)如果大家看过“对象游览器->所有库”中,就会发觉vba多了几项“acadproject”“autocad”“stdole”东东,如果vb也有这几项,应该也有vba的功能了(如果我没有想错的话应该是添加“模块”吧?问题是如何找到这个模块.....) 而且加上vb上的“部件”里的“可插入对象”应该是可独立于cad而实现我想要的功能了.... ———————————————————————— 后来还看到了这位朋友的贴子 发觉这也是可行的办法,不过由于资历有限,对一些地方也还是不明。我所理解的是,就是通过vb召唤出cad里的特殊vba,然后再由这个vba做应做的事....... 但我问题是,如何召唤出vba后,实现vba的功能呢?(通过vb写的话不知vb本身认不认出这样的命令....)然后就是还有如何搞好一切后,那个命令是关闭vba呢? 用了vb干吗还要vba,vba能做的,vb也能 问题是vb没有现在cad上vba的对象库,所以我想问一下大家如何添加?? dim acadapp as acadapplication dim acaddoc as acaddocument sub connecttoacad() on error resume next set acadapp = getobject(, "autocad.application") if err then err.clear setacadapp = createobject("autocad.application") if err then end end if acadapp.visible = true set acaddoc = acadapp.activedocument end sub private sub command1_click() dim start1(2) as double dim end1(2) as double end1(0) = 100 end1(1) = 100 dim line as acadline call connecttoacad set line = acaddoc.modelspace.addline(start1, end1) end sub 成功解决了一部份问题......原来是acaddoc,不是thisdrawing,不知为什么代码会换成这个.... 可惜还不能用....“工程”->“部件”->“可插入对象”里“插入autocad图形”(name叫做drawing1) 但好象不能用这个ole...... 难道楼主不知道引用autocad类型库,引用以后在对象浏览器可以查看这些对象 已经引用了,否则也不会出现3楼那段代码...... 问题是,这样只能在autocad那个软件上画,不能用“工程”->“部件”->“可插入对象”里“插入autocad图形”(name叫做drawing1)这个ole上来画? vb和vba本质上并无区别 先引用cad的类型库,进行以下定义 dim acadapp as acadapplication dim acaddoc as acaddocument 等将程序写好后再将引用去掉,然后再将定义改成以下方式 dim acadapp as object dim acaddoc as object 这样就不依赖cad的版本了 也可以声明cad内的对象所触发的事件 哦~??真的!?那就要试试了~!先谢谢楼上的解答. 最近在学习vb对autocad进行二次开发 请教下楼主 在开发过程中发现2个问题 1.利用vb打开autocad后,改变图层、图形界限等,并绘制了一些图形,当利用set acaddoc=acadapp.documents.add 想再打开一空白cad文档时,会出现“输入要加载的自定义文件的名称:”,按esc键后,会正常绘图,否则,将会出现“程序忙”的错误 2.我将镜像命令mirror编了一个小程序 public sub hmirror(byval mirrorvp as variant,byval mirrorobj as object) 'mirrorvp为镜像点,mirrorobj为需镜像的图形 dim mirrorvp1(0 to 2) as double dim mirrorvp2(0 to 2) as double mirrorvp1(0)=mirrorvp(0) mirrorvp1(1)=mirrorvp(1) mirrorvp1(2)=0 mirrorvp2(0)=mirrorvp(0) mirrorvp2(1)=mirrorvp(1)+5 mirrorvp2(2)=0 mirrorobj.mirror mirrorvp1,mirrorvp2 end sub 调用此小模块时,比如:call hmirror(mirrorvp,lineobj)想对一条直线进行镜像时,会出“对象变量或with块变量未设置”的错误提示。 dim lineobj as acadline 或 dim lineobj as object 均无效 热切盼望楼主或其他高深人士指导迷津啊。 楼主,能否加你的qq呢,盼望与你的交流。我的qq号:117672764 谢谢啊。 |
所有的时间均为北京时间。 现在的时间是 01:02 PM. |