明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2669|回复: 6

再谈实体旋转与拖动的问题

[复制链接]
发表于 2008-4-25 07:59:00 | 显示全部楼层 |阅读模式

有那位兄弟知道,怎样模仿CAD中的旋转实体命令(rotate)和拖动实体命令(Move)的效果。

实体的旋转与拖动我尝试过用AcEdJig函数,但是这个函数只能拖动和旋转一个实体,(请问能用AcEdJig编辑多个实体么?)

并且,在拖动和旋转的过程中,会显示出一些不应该的效果

比如我用AcEdJig拖动和旋转,一个带属性(AcDbAttribute)的块引用(这个块中也存在块定义(AcDbAttributeDefintion))的过程中。都会显示相应块的块定义。例如我在块中添加的块定义的tag="textTag",则在拖动和旋转的过程中,总会显示“textTag”这个字符。

但是CAD中move一个实体和rotate一个实体的时候,则不会这样。

归根到底,我就是想知道怎样模仿CAD中,旋转和移动一个实体的那种效果,CAD是怎么做到的。

发表于 2008-4-25 19:20:00 | 显示全部楼层
.......还是你呀?那方法是对的。你可以别把AcDbAttributeDefinition加进块里面嘛!那样不是不会显示出来?Jig完之后还是把原来的实体移过去就行了呀。
 楼主| 发表于 2008-4-26 19:59:00 | 显示全部楼层

呵呵~bluelightcsy 兄弟还是我~

我是在jig中按照要移动的pBlockReference,创建一个临时的pBlockReferenceTemp(根据原来的BlockId,重新创建一个临时的块表记录,这个块表记录中不包含AcDbAttributeDefinition),但是,原来的pBlockReference中包含AcDbAttribute啊,而且我要求在移动(或旋转)的过程中,要随时显示要移动的pBlockReference和其包含的AcDbAttribute。

也就是说在移动过程中,必须pBlockReference和AcDbAttribute同时显示。

但是JIg不能同时移动多个实体。我不知道应该怎么解决

你看CAD中的移动和旋转命令。可以移动和旋转任何数量的实体。我就是想要那种效果。不知道CAD是怎么做到的?

再次感谢bluelightcsy 兄弟,关注我的帖子.....

发表于 2008-4-27 20:42:00 | 显示全部楼层
....这么说吧,有一个块A,里面有一个属性,名字叫B,值为C。你想移动的时候显示成什么样?根据我的理解,你要显示A,B?是这样吗?
 楼主| 发表于 2008-5-3 18:22:00 | 显示全部楼层

实在不好意思了~~bluelightcsy兄弟,最近事情很多,比较忙,没来的论坛

我想无论是在拖动或者旋转的过程中,都是显示A和C,

也就是说我只是想显示属性值

要是再通俗一点说,

你在CAD中做一个简单的包含属性定义的块,然后用insert命令插入一个块参照。<---这是准备工作

然后用移动命令或者旋转命令,操作这个块参照。要的就是那种效果

我做了一个简单的图。你可以直接用移动或者旋转命令操作一下图中的实体。就是那种效果

感谢兄弟关注

本帖子中包含更多资源

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

x
发表于 2008-5-8 12:48:00 | 显示全部楼层

。。。还是没搞明白你想显示撒。总之显示撒都是可以做到的。拿你的图来说,你是想显示BJ而不是10和50这具体的数字吧?试一下下面代码,把所有AttributeDefinition变成Attribute.

    AcDbAttribute* pEnt = NULL;
    pEnt = new AcDbAttribute();
    if(NULL == pEnt)
        return Acad::eOutOfMemory;

    // set the parameters of the AcDbAttribute
    // set ENTITY common fields
    ((AcDbAttribute*)pEnt)->setPropertiesFrom(pAttribDef);

    // set ATTDEF common fields
    ((AcDbAttribute*)pEnt)->setInvisible(Adesk::kFalse);
    // put in default value for test
    ((AcDbAttribute*)pEnt)->setTextString(pAttribDef->tag());

    // append the attribute to the block reference
    pBlockRef->appendAttribute(pEnt);

 楼主| 发表于 2008-5-9 18:09:00 | 显示全部楼层

谢谢楼上兄弟~我使用一个代理的类实现了要求

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

本版积分规则

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

GMT+8, 2024-11-25 15:54 , Processed in 0.163431 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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