再谈实体旋转与拖动的问题
有那位兄弟知道,怎样模仿CAD中的旋转实体命令(rotate)和拖动实体命令(Move)的效果。实体的旋转与拖动我尝试过用AcEdJig函数,但是这个函数只能拖动和旋转一个实体,(请问能用AcEdJig编辑多个实体么?)
并且,在拖动和旋转的过程中,会显示出一些不应该的效果
比如我用AcEdJig拖动和旋转,一个带属性(AcDbAttribute)的块引用(这个块中也存在块定义(AcDbAttributeDefintion))的过程中。都会显示相应块的块定义。例如我在块中添加的块定义的tag="textTag",则在拖动和旋转的过程中,总会显示“textTag”这个字符。
但是CAD中move一个实体和rotate一个实体的时候,则不会这样。
归根到底,我就是想知道怎样模仿CAD中,旋转和移动一个实体的那种效果,CAD是怎么做到的。
.......还是你呀?那方法是对的。你可以别把AcDbAttributeDefinition加进块里面嘛!那样不是不会显示出来?Jig完之后还是把原来的实体移过去就行了呀。 呵呵~bluelightcsy 兄弟还是我~
我是在jig中按照要移动的pBlockReference,创建一个临时的pBlockReferenceTemp(根据原来的BlockId,重新创建一个临时的块表记录,这个块表记录中不包含AcDbAttributeDefinition),但是,原来的pBlockReference中包含AcDbAttribute啊,而且我要求在移动(或旋转)的过程中,要随时显示要移动的pBlockReference和其包含的AcDbAttribute。
也就是说在移动过程中,必须pBlockReference和AcDbAttribute同时显示。
但是JIg不能同时移动多个实体。我不知道应该怎么解决
你看CAD中的移动和旋转命令。可以移动和旋转任何数量的实体。我就是想要那种效果。不知道CAD是怎么做到的?
再次感谢bluelightcsy 兄弟,关注我的帖子.....
....这么说吧,有一个块A,里面有一个属性,名字叫B,值为C。你想移动的时候显示成什么样?根据我的理解,你要显示A,B?是这样吗? 实在不好意思了~~bluelightcsy兄弟,最近事情很多,比较忙,没来的论坛
我想无论是在拖动或者旋转的过程中,都是显示A和C,
也就是说我只是想显示属性值
要是再通俗一点说,
你在CAD中做一个简单的包含属性定义的块,然后用insert命令插入一个块参照。
然后用移动命令或者旋转命令,操作这个块参照。要的就是那种效果
我做了一个简单的图。你可以直接用移动或者旋转命令操作一下图中的实体。就是那种效果
感谢兄弟关注
。。。还是没搞明白你想显示撒。总之显示撒都是可以做到的。拿你的图来说,你是想显示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);
谢谢楼上兄弟~我使用一个代理的类实现了要求
页:
[1]