![]() |
【转帖】再谈实体旋转与拖动的问题
再谈实体旋转与拖动的问题
再谈实体旋转与拖动的问题 有那位兄弟知道,怎样模仿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命令插入一个块参照。<---这是准备工作 然后用移动命令或者旋转命令,操作这个块参照。要的就是那种效果 我做了一个简单的图。你可以直接用移动或者旋转命令操作一下图中的实体。就是那种效果 感谢兄弟关注 该文件为 autocad 。。。还是没搞明白你想显示撒。总之显示撒都是可以做到的。拿你的图来说,你是想显示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); 谢谢楼上兄弟~我使用一个代理的类实现了要求 |
| 所有的时间均为北京时间。 现在的时间是 03:42 AM. |