找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5221|回复: 7

[求助] ObjectArx执行CAD命令求教

[复制链接]
发表于 2014-11-27 10:10:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
各位老师,请教一下,如何在ARX里面执行PU的命令?
我用 es=acDocManager->sendStringToExecute(pTmpDoc,_T("\003\003\003PU"),true,true,true);总是返回eInvalidInput!
用acedcommad又怎么做?acedcommand的返回值是int型,有什么意义?
其中pTmpDoc是通过appContextOpenDocument(strFilePath)之后AcApDocument* pTmpDoc = acDocManager->curDocument();得到的。
如果执行PU命令,它肯定会弹出对话框,有什么参数或者如何设置参数使得可以跳过该对话框二选择pu all(即清除全部不要的)?
谢谢各位啦!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2014-11-27 10:21:33 | 显示全部楼层
在文件acadstrc.h头文件中找到如下代码:
// Acad::PromptStatus

    //

    // Define an enum sequence

    // in the image of the RT* return statuses defined in ADSCODES.H.

    // In fact, these values can be directly interchanged with ads_get*()

    // function return statuses, except for eDirect as noted below.

    // I suggest it be scoped in class Acad, which

    // also scopes ErrorStatus.

    //

    enum PromptStatus {

        eNone     =  5000, //No result

        eNormal   =  5100, //Request succeeded

        eError    = -5001,   //Nonspecific error

        eCancel   = -5002, //User canceled the request with a CTRL-C

        eRejected = -5003, //AutoCAD rejected the request as invalid

        eFailed   = -5004, //Link failure, possibly with the LISP interpreter

        eKeyword  = -5005, //Keyword returned from a "get" routine

        eDirect   = -5999    // Passed to endGetPoint if the getpoint was

                             // nested within another geometric value prompt,

                             // (such as angle) and the entered response was

                             // such a value rather than a point.

    };
msdn的解释:Acad::PromptStatus Enum
These values are similar to the RT return status values defined in adscodes.h. In fact, these values can be directly interchanged with acedGetXxxx() function return statuses, except for eDirect as noted below.


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-27 10:23:11 | 显示全部楼层
用ARX了,为什么还要用PU命令? PU命令就是ARX写的,ARX里面就有PUGRE的方法了,直接用ARX做吧。

点评

您说的有道理,确实是有PUGRE,但是通过调用PU执行为什么不行呢?  详情 回复 发表于 2014-11-27 10:29
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-27 10:29:52 | 显示全部楼层
newer 发表于 2014-11-27 10:23
用ARX了,为什么还要用PU命令? PU命令就是ARX写的,ARX里面就有PUGRE的方法了,直接用ARX做吧。

您说的有道理,确实是有PUGRE,但是通过调用PU执行为什么不行呢?

点评

首先,你用的是发送字符串到命令行,那么你应该至少给命令的全名吧? PURGE, 另外,不知道你会不会LISP,你在命令行用LISP代码执行PURGE的完整过程需要你手工输入的参数,你要完全送给ARX的字符串命令里面,包括  详情 回复 发表于 2014-11-27 10:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-27 10:51:51 | 显示全部楼层
kaierwener 发表于 2014-11-27 10:29
您说的有道理,确实是有PUGRE,但是通过调用PU执行为什么不行呢?

首先,你用的是发送字符串到命令行,那么你应该至少给命令的全名吧? PURGE,

另外,不知道你会不会LISP,你在命令行用LISP代码执行PURGE的完整过程需要你手工输入的参数,你要完全送给ARX的字符串命令里面,包括回车。

(command ".purge" "a" "" "n")

你把后面的参数都写全了,试试。

点评

谢谢您耐心回复,才刚刚开始接触CAD二次开发,很多地方都不清楚,我试试看。LISP这块不明白,还要学习!  详情 回复 发表于 2014-11-27 11:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-27 11:46:08 | 显示全部楼层
newer 发表于 2014-11-27 10:51
首先,你用的是发送字符串到命令行,那么你应该至少给命令的全名吧? PURGE,

另外,不知道你会不会LI ...

谢谢您耐心回复,才刚刚开始接触CAD二次开发,很多地方都不清楚,我试试看。LISP这块不明白,还要学习!

点评

你把上面N版本写的: (command ".purge" "a" "" "n") 拷贝到CAD命令行回车执行,看看有对话框提示吗? 你在ARX下需要的是把上面 所有的字符 都做成命令字符串发送给ACAD执行。相当于手工在命令行输入上面的内容。  详情 回复 发表于 2014-11-27 12:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-27 12:00:43 | 显示全部楼层
kaierwener 发表于 2014-11-27 11:46
谢谢您耐心回复,才刚刚开始接触CAD二次开发,很多地方都不清楚,我试试看。LISP这块不明白,还要学习!
...

你把上面N版本写的: (command ".purge" "a" "" "n")

拷贝到CAD命令行回车执行,看看有对话框提示吗? 你在ARX下需要的是把上面 所有的字符 都做成命令字符串发送给ACAD执行。相当于手工在命令行输入上面的内容。

点评

没有对话框提示,执行结果如下: 命令: (command ".purge" "a" "" "n") 找不到未参照的块。 找不到未参照的图层。 找不到未参照的线型。 正在删除文字样式“Td1”。 正在删除文字样式“TJOK”。 正在删除文字  详情 回复 发表于 2014-11-27 13:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-27 13:41:51 | 显示全部楼层
XDSoft 发表于 2014-11-27 12:00
你把上面N版本写的: (command ".purge" "a" "" "n")

拷贝到CAD命令行回车执行,看看有对话框提示吗? ...

没有对话框提示,执行结果如下:
命令: (command ".purge" "a" "" "n")
找不到未参照的块。
找不到未参照的图层。
找不到未参照的线型。
正在删除文字样式“Td1”。
正在删除文字样式“TJOK”。
正在删除文字样式“uuuok”。
正在删除文字样式“wu”。
正在删除文字样式“zhangyouneng”。
已删除 5 个文字样式。
正在删除形文件“romant.shx”。
已删除 1 个形文件。
正在删除标注样式“Standard”。
已删除 1 个标注样式。
找不到未参照的多线样式。
找不到未参照的打印样式。
找不到未参照的表格样式。
找不到未参照的材质。
找不到未参照的视觉样式。
nil

所有的多余的东西已经被删掉,谢谢!从一个方面来说,在这样执行PU确实是非常的麻烦,每次都要执行打开文件,靠PURGE应该更好!暂且战略性MARK!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 11:33 , Processed in 0.268020 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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