明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4904|回复: 16

能不能不启动AutoCAD就执行命令?或者××××

  [复制链接]
发表于 2003-9-15 17:52:00 | 显示全部楼层 |阅读模式
能不能不启动AutoCAD就执行ARX(VBA,AutoLISP)命令?或者在启动了AutoCAD的情况下通过外部调用什么命令执行ARX(VBA,AutoLISP)?意思就是不用手工appload,再在命令行中键入命令来执行程序ARX(VBA,AutoLISP)?谢谢
发表于 2003-9-15 18:28:00 | 显示全部楼层
搜搜吧,有4种以上的方法可以做到
 楼主| 发表于 2003-9-15 21:28:00 | 显示全部楼层
本帖最后由 作者 于 2003-9-16 9:09:26 编辑

谢谢,请你告之(当然我也会去搜搜,就是没有结果)我的意思是不用自动加载arx的,而是通过外面命令,不如在dos下,linux下无人就可以执行绘图。明白吗?
 楼主| 发表于 2003-9-17 10:25:00 | 显示全部楼层
有知道CAD远程控制的吗?我想通过命令来控制远程的一台CAD(AutoCAD2004)服务器绘图,怎么做?比如传递一些参数给一些命令(用ARX写的)

不是修改组册表,修改CAD启动文件(LISP调用,启动ARX等等)
发表于 2003-9-17 13:05:00 | 显示全部楼层
说详细点
 楼主| 发表于 2003-9-17 14:13:00 | 显示全部楼层
详细说明:
楼上的楼上的意思是:怎么用外部命令去触发CAD绘图?比如我在远程服务器上发出一个绘图请求,而绘图要用到ARX程序(可以在Autocad启动是加载),cad如何接收完成这个请求?

现在修改如下:
ARX程序每隔一个时间段去查询一下数据库服务器(Linux),看有没有绘图请求(绘图请求是存放在一个表中),如果还有请求没有完成,那就根据绘图请求取出相应的数据进行绘图,然后把绘图结果(.dwg文件)存放到文件服务器(Linux)上去。

问题一: 怎么写代码,每隔一个时间段去查询数据库?然后触发绘图事件?有现成的代码吗?
问题二: ARX程序是不是在启动Auto CAD2004是加载就可以完成以上功能?如果不能,那么要怎么做?
问题三: 绘图结果(.dwg文件)存放到文件服务器(Linux)上在ARX中调用saveas()可以吗?

说明:操作系统除 Cad服务器是Windows XP外,其他可能是Linux或其他。  程序是ARX
发表于 2003-9-17 15:35:00 | 显示全部楼层
1) 你要用到计时器,查我的编程日记,有关于计时器的.
2)我不知道你具体的工况,如果AutoCAD一直开着,定时去查数据库并自动画图,当然容易.
你只要搞清楚如何查数据库就可以了.
3)启动Auto CAD2004时当然可以启动计时器
4)saveas 可以用.
=======不知道来龙去脉,也不知道你的思路是不是合理.





问题二: ARX程序是不是在启动Auto CAD2004是加载就可以完成以上功能?如果不能,那么要怎么做?
问题三: 绘图结果(.dwg文件)存放到文件服务器(Linux)上在ARX中调用saveas()可以吗?
 楼主| 发表于 2003-9-17 16:38:00 | 显示全部楼层
本帖最后由 作者 于 2003-9-17 18:06:36 编辑

首先谢谢goldenshin的回复!

下面我把我的思路说一下:

1.客户端(Linux服务器)发出绘图请求(Java 脚本),传递绘图参数给AutoCAD2004服务器(Windows XP);
2.AutoCAD2004服务器有一个监听进程,监听客户端的绘图请求,并接收绘图参数;
3.监听进程将请求列队,并根据先到先服务的原则,触发AutoCAD绘图,AutoCAD根据监听进程的绘图请求参数查询数据库,取出数据绘图。同时,监听进程等待绘图完成。AutoCAD绘图完成,保存图纸,传递完成消息给监听进程,并将数据库绘图请求表的状态标志改为completed,否则改为error。监听进程接收绘图完成信息,删除已完成的绘图请求,并触发下一个绘图请求。
4.如果在一定的时间内AutoCAD没有接收到绘图请求,即没有进行绘图,就主动去查询绘图请求数据库表,如果有没有完成的,就完成之。(这里要用到你的记时器)
5.客户端取回图纸(如果AutoCAD能把图纸直接存到客户端更好)。

问题:
1.我怎么查询不到你的计时器?如何查询?
2.怎么写监听程序?
3.AutoCAD如何和监听进程之间传递消息?
4.监听进程如何触发AutoCAD进行绘图?

说明:AutoCAD一直是启动的,并在启动是就加载了绘图的ARX程序。

********************** 修改一 09-17 17:54 **********************
以上是我原来的想法,很麻烦!
先修改如下:
1.AutoCAD2004启动,并加载ARX程序;
2.ARX程序初始化连接数据库;
3.查询数据库中有没有没有完成的请求,如有,则完成;
4.如果没有数据库中没有没完成的请求,则arx程序没隔一个时间片就去查询数据库,重复第3步;

说明:
1.以上除了启动都是自动的(启动也可以自动)。
问题:
1.如何使这个ARX程序从开始就一直运行下去?因为要不断查询数据库(因为如果在ARX里写在一个时间片一直循环,那

这个命令就不能停了,AutoCAD就不能做别的事了,对吗?)
2.如果该成外部有一个监听程序接收到请求,然后启动AutoCAD绘图,那么这要怎么解决?一个外部程序怎么和AutoCAD

进行通信?我的意思是外部程序怎么用AutoCAD的命令?即可以调用AutoCAD命令。

不知道您有什么好的方法?
发表于 2003-9-18 09:34:00 | 显示全部楼层
本帖最后由 作者 于 2003-9-18 10:20:20 编辑

>>>1.客户端(Linux服务器)发出绘图请求(Java 脚本),传递绘图参数给AutoCAD2004服务器(Windows XP);
既然要AutoCAD去查数据库,就不要传递绘图参数给AutoCAD2004,只要传递绘图命令就可以,AutoCAD接到命令就可以去查绘图参数.

>>>>2.AutoCAD2004服务器有一个监听进程,监听客户端的绘图请求,并接收绘图参数;
如上,不要接收绘图参数,只接收绘图请求

>>>>>3.监听进程将请求列队,并根据先到先服务的原则,触发AutoCAD绘图,AutoCAD根据监听进程的绘图请求参数查询数据库,取出数据绘图。同时,监听进程等待绘图完成。AutoCAD绘图完成,保存图纸,传递完成消息给监听进程,并将数据库绘图请求表的状态标志改为completed,否则改为error。监听进程接收绘图完成信息,删除已完成的绘图请求,并触发下一个绘图请求。
使用Socket收发消息是一种方式,肯定可以成功,在你的思路中,要互为服务器,建议给Linux设个参数,当AutoCAD发来准备好的消息了,才向AutoCAD发绘图请求,否则等待AutoCAD发来准备好了的消息.

>>5.客户端取回图纸(如果AutoCAD能把图纸直接存到客户端更好)。
文件存到哪里,是个文件操作的问题,与AutoCAD本身无关.

>>>1.我怎么查询不到你的计时器?如何查询?
?????????//?我记得我写过计时器的, 不见了????


>>>2.怎么写监听程序?
这个嘛,你自己先研究一下,不懂的地方再发帖

>>>>3.AutoCAD如何和监听进程之间传递消息?
>>>>4.监听进程如何触发AutoCAD进行绘图?
两台机器之间的消息传递,可以不在AutoCAD中写,先用VB写好成DLL,再在ARX里调用,如果不熟,还是直接在Arx中写好些.
监听进程就在Arx中,不存在如何触发AutoCAD的问题.
发表于 2003-9-18 09:39:00 | 显示全部楼层
等你做完这个,希望你能来当版主,呵,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 18:23 , Processed in 0.195273 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表