几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(C++)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-17, 10:17 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】如何进入指定点所在的浮动视口

如何进入指定点所在的浮动视口
如何进入指定点所在的浮动视口
我想在图纸空间进入指定点所在的浮动视口,代码如下:
// ----- drv._equivalence command (do not rename)
static void drv_equivalence(void)
{
// add your code for command drv._equivalence here
ads_name en;
ads_point pt;
ads_matrix xform;
struct resbuf * rb=null;
int rtvalue=acednentselp("请选择模板对象:\n",en,pt,false,xform,&rb);
if (rtvalue!=rtnorm)
{
acdbdatabase *dbase=acdbhostapplicationservices()->workingdatabase();
if (!dbase->tilemode())
{
acdbviewport* pvp=null;
acaplayoutmanager * playoutmanager=null;
struct resbuf rbold,rbnew;
rbnew.restype=rtshort;
rbnew.resval.rint=0;
acedgetvar("osmode",&rbold);
acedsetvar("osmode",&rbnew);
rtvalue=acedgetpoint(null,"请选择模型空间对象上的点:\n",pt);
acedsetvar("osmode",&rbold);
if (rtvalue==rtnorm)
{
acgepoint3d pt3d=aspnt3d(pt);
playoutmanager=(acaplayoutmanager*)acdbhostapplicationservices()->layoutmanager();
acdbobjectidarray ids;
playoutmanager->pointinviewports(pt3d,ids);
int i=-1,len;
if (len=ids.length())
{
rtvalue=null;
do
{
if (++i>=len)
return;
acdbopenobject(pvp,ids,acdb::kforwrite);
acad::errorstatus es=pvp->seton();
if(es!=acad::eok)
afxmessagebox(_t("seton():")+(cstring)acaderrorstatustext(es));
//运行至下面一句出现问题错误返回值:es=eoutofrange
es=acedsetcurrentvport(pvp);
if(es==acad::eok)
rtvalue=acednentselp(null,en,pt,true,xform,&rb);
else
acedalert(_t("acedsetcurrentvport():")+(cstring)acaderrorstatustext(es));
pvp->close();
} while (rtvalue!=rtnorm);
}
}
}
}
if(rb)
{
acutrelrb(rb);
rb=null;
}
else
return;
}
复制代码
调试运行至“es=acedsetcurrentvport”出现错误返回值es=eoutofrange,请问为什么?
[ 本帖最后由 hi_tek 于 8-9-18 03:04 pm 编辑 ]
请高手给个实例!!!
站长教材里的那个viewport例子在vc++2编译后在autocad4里运行也得到eoutofrange的错误返回值,不知用vc++6.0编译后在autocad2里运行怎么样?
请哪位用autocad2试试?
用vc++6.0编译张帆站长教材里“第四章 4.5小节第二个命令‘createvportinspace’(第174页)”,执行这个命令后是否将新生成的视口置为当前(新视口高亮显示)?
我用vc++2编译后运行于autocad4上,函数acedsetcurrentvport()返回值为eoutofrange,没有把新视口置为当前,没进入到新视口中去,未达到程序设计目的。
经艰苦试验,证实要想acedsetcurrentvport()返回eok,必须已进入浮动视口的模型空间,也就是说:acedsetcurrentvport()仅能实现浮动视口之间的切换!
[ 本帖最后由 hi_tek 于 8-9-28 02:02 pm 编辑 ]
这个坛子有人解决问题么
很多问题都是类似楼主自问自答
或者干脆不了了之
我放上的帖子约有一半都是自答式的,真是无奈!
也是锻炼能力的方法
不过这个论坛的交流作用似乎已经衰退了
偶尔会冒出一点作品展示和自问自答的文章
可惜啊
其实objectarx的书和其他编程书籍相比,少得可怜。
基本上入门无非是 软件下载 安装设置 文档 函数使用 那几本 教材里面的问题
[ 本帖最后由 catface 于 8-10-29 09:47 pm 编辑 ]
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 03:24 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多