gskelly 发表于 2010-1-29 05:26:59

Bricscad V10的嵌套副本

任何人都想为我测试它
命令=extncopy
**** Hidden Message *****

frtfff 发表于 2010-1-29 07:51:43


不确定它应该做什么,但我看到的是:
-将从插入中复制文本作为新的文本实体
-将从插入中复制属性作为新的文本实体
-将从外部参照中复制文本作为新的文本实体
-不会从插入或外部参照中复制直线、圆弧、多段线
-将从嵌套块(块中的块)的插入中复制属性
-不会从嵌套块的插入中复制文本
Bricscad 10.2.10, win XP Pro SP3
[更新]:
-将当前dwg中的文本实体复制到新的文本实体
-将当前dwg中的行实体复制到新的行实体

Kerry 发表于 2010-1-29 20:49:18

太好了,谢谢你!!
该例程似乎将受到acedNEntSelP的限制。
好消息是复制直线、弧线。来自intesrts的etc似乎在最新的测试版中运行良好。

Kerry 发表于 2010-1-29 21:28:55

我试图在AutoCAD2008中测试您的程序,但失败了。你会改变你的系统吗?
还是其他人?
而且,主要功能是什么?

gskelly 发表于 2010-1-29 22:21:28


这是为Bricscad编译的
类似于Express tools nCope

gskelly 发表于 2010-1-30 04:45:07


我明天下载丹的时候会试一试...还是你很酷?

gskelly 发表于 2010-1-30 04:55:55

实际上,我刚刚更新了附件。
我需要应用来自每个嵌套所有者的转换…如果这有意义的话..也许代码会更好地解释它。
@Greg,它可能是在创建副本,但只是将它们放在lala land中。
void copyNested( void )
{
Acad::ErrorStatus es;
ads_name ssname = {0L,0L};
ads_name adsName = {0L,0L};
ads_matrix adsMatrix;
resbuf *pbuf = NULL;
ident_init(adsMatrix);
if(HandleRtMsg(
      acedNEntSelP(_T("\nSelect Nested Entity: "),adsName,g_adsPoint,0,adsMatrix,&pbuf)) == RTNORM)
{
    AcDbObjectId selectedEntId , selectedOwnerId;
    TRYRETVOID(acdbGetObjectId(selectedEntId,adsName));
    AcDbEntityPointer selectedEnt(selectedEntId,AcDb::kForRead);
    AcDbEntity *pNewEnt = static_cast(selectedEnt->clone());
    if (AcDbAttribute::cast (pNewEnt))
    { // based of Alexander Rivilis's code
      AcDbAttribute *pAtt = AcDbAttribute::cast (pNewEnt);
      AcDbText *pText = new AcDbText();
      pText->setPropertiesFrom(pAtt);
      pText->setHeight(pAtt->height ());
      pText->setWidthFactor(pAtt->widthFactor());
      pText->setHorizontalMode(pAtt->horizontalMode());
      pText->setTextStyle(pAtt->textStyle());
      pText->setVerticalMode(pAtt->verticalMode());
      pText->setTextString(pAtt->textStringConst());
      pText->setRotation(pAtt->rotation());
      pText->setPosition (pAtt->position());
      pText->setNormal(pAtt->normal());
      pText->setOblique(pAtt->oblique());
      pText->setThickness(pAtt->thickness());
      pText->setAlignmentPoint(pAtt->alignmentPoint());
      delete pNewEnt;
      pNewEnt = pText;
    }
    if(pbuf)
    {
      // --------------------- needed this----------------------
      for(resbuf *ptmp = pbuf;ptmp!=NULL;ptmp=ptmp->rbnext)
      {
      es = HandleESMsg( acdbGetObjectId(selectedOwnerId,ptmp->resval.rlname) );
      if(es == eOk)
      {      
          AcDbObjectPointer selectedOwner(selectedOwnerId,AcDb::kForRead);
          if(HandleESMsg(selectedOwner.openStatus()) == eOk)
          {
            TRYMSG(pNewEnt->transformBy(selectedOwner->blockTransform()));
          }
      }
      }
      acutRelRb(pbuf);
    }
    AcDbObjectId id;
    CTools::AddToCurrentSpace(id,pNewEnt);
    moveEnt(id);
}
}

Kerry 发表于 2010-1-30 05:04:47


这是属性文本的大量跳转!!!
我会在午餐时间让金砖加加载,所以我会玩。

frtfff 发表于 2010-1-30 08:58:24


啊,是的,做到了...我倾向于远离原点(目前在5570000,4941000或多或少)的地方工作,
我会看到如果我从插入中复制HATCH,它最终会在错误的地方。 我现在看到我测试的差点停车符号仅在x和y中缩放,因此一旦我更改,孵化副本就被正确创建。
线条,弧线,多段线,文本,属性和图案填充的副本似乎都可以从插入和嵌套插入中正常工作...
各向异性缩放:
...没关系。。。我看到消息告诉我它炮子比例不均匀
这是否仅限于系统的单个实体选择?
必须运行,如果需要,我可以稍后查看XREF,而其他人没有。

Kerry 发表于 2010-1-31 08:37:40

好吧,该死,好吧,我打赌Acad中的ncopy正在做一些其他的魔法(可能会爆炸)。我不知道它是如何处理未均匀缩放的块的
页: [1] 2
查看完整版本: Bricscad V10的嵌套副本