设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

膜结构车棚
膜结构车棚膜结构资质国产膜材 膜结构网中国膜结构协会
查看: 163|回复: 1

ObjectARX学习笔记(二十五)---如何在两个dwg里面拷贝字体样式表AcGiTextStyle ,AcD...

[复制链接]
  • TA的每日心情
    开心
    2021-6-23 14:19
  • 签到天数: 1543 天

    [LV.Master]伴坛终老

    发表于 2021-2-24 14:55 | 显示全部楼层 |阅读模式
    //两个dwg拷贝字体信息
    bool CopyTextStyleIdInfo(AcDbDatabase *pFromDataSrc/*in*/,AcDbDatabase *pToDataDes/*in*/)
    {
            if (pFromDataSrc == NULL || pToDataDes == NULL)
                    return false;

            AcDbTextStyleTable *pStyleTable = NULL;
            Acad::ErrorStatus es = Acad::eOk;
            es = pFromDataSrc->getSymbolTable(pStyleTable,AcDb::kForRead);
            if (es != Acad::eOk)
                    return false;

            AcDbTextStyleTableIterator *pIterator = NULL;
            es = pStyleTable->newIterator(pIterator);
            if (es != Acad::eOk)
            {
                    pStyleTable->close();
                    pStyleTable = NULL;
                    return false;
            }

            for (pIterator->start();!pIterator->done();pIterator->step())
            {
                    AcDbObjectId styleId = AcDbObjectId::kNull;
                    if ((es = pIterator->getRecordId(styleId)) == Acad::eOk)
                    {
                            AcGiTextStyle *pTextStyle=new AcGiTextStyle(pToDataDes);
                            if((es =fromAcDbTextStyle(*pTextStyle,styleId)) == Acad::eOk )
                            {
                                    AcDbTextStyleTableRecord* pNewRec = new AcDbTextStyleTableRecord;

                                    setSymbolName(pNewRec,pTextStyle->styleName());
                                    pNewRec->setFileName(pTextStyle->fileName());
                                    /*待完善*/
                                    ACHAR * pTypeface = NULL;
                                    Adesk::Boolean bold;
                                    Adesk::Boolean italic;
                                    int charset;
                                    int pitchAndFamily;
                                    es = pTextStyle->font(pTypeface,bold,italic,charset,pitchAndFamily);
                                    if (es == Acad::eOk)
                                            pNewRec->setFont(pTypeface,bold,italic,charset,pitchAndFamily);

                                    pNewRec->setBigFontFileName(_T(""));// must explicitly set to ""
                                    pNewRec->setTextSize(pTextStyle->textSize());
                                    pNewRec->setObliquingAngle(pTextStyle->obliquingAngle());
                                    pNewRec->setXScale(pTextStyle->xScale());
                                    addToSymbolTableAndClose(pNewRec,pToDataDes);
                            }
                            if (pTextStyle != NULL)
                            {
                                    delete pTextStyle;
                                    pTextStyle = NULL;
                            }
                    }               
            }

            if (pIterator != NULL)
            {
                    delete pIterator;
                    pIterator = NULL;
                    pStyleTable->close();
                    pStyleTable = NULL;
            }
            return true;
    }

    //添加文字样式块表记录
    BOOL addToSymbolTableAndClose(AcDbSymbolTableRecord* systemTextRec/*in*/,AcDbDatabase *pDataBase/*in*/)
    {
            if (pDataBase == NULL || systemTextRec == NULL)
                return FALSE;

            AcDbTextStyleTable* symTextTbl = NULL;
             Acad::ErrorStatus es = Acad::eOk;
            es = pDataBase->getTextStyleTable(symTextTbl, AcDb::kForWrite);
            if (es != Acad::eOk)
            {
                    if (systemTextRec != NULL)
                    {
                            delete systemTextRec;
                            systemTextRec = NULL;
                    }
                    return FALSE;
            }
            AcDbSymbolTable *pSysRec = AcDbTextStyleTable::cast(symTextTbl);
             //覆盖字体样式
             es = pSysRec->add(systemTextRec);
             if (es != Acad::eOk )
             {
                     symTextTbl->close();
                     systemTextRec->close();
                     return FALSE;
             }
             else
             {
                    systemTextRec->close();
                symTextTbl->close();
             }
            return TRUE;
    }

    BOOL setSymbolName(AcDbSymbolTableRecord* newRec, LPCTSTR newName)
    {
            Acad::ErrorStatus es;
            es = newRec->setName(newName);
            if (es != Acad::eOk) {
                    newRec->close();
            }
            return(es);
    }

    //返回实体所在图层颜色
    Adesk::UInt16 getColorIndexByLayer(Adesk::UInt16 icolorIndex,CString lyname,AcDbDatabase *pDb)
    {
            if (pDb == NULL)
               return 7;

            Adesk::UInt16 iclorIndexResult = 0;
            Acad::ErrorStatus  bEs = Acad::eOk;
            if (icolorIndex == 256) //随层
            {
                    AcDbLayerTable *pDbLy;
                    bEs = pDb->getLayerTable(pDbLy,AcDb::kForRead);
                    if (bEs == Acad::eOk)
                    {
                            Adesk::Boolean es=pDbLy->has(lyname);
                            if (es)
                            {
                                    AcDbLayerTableRecord *pLayerTblRcd;
                                    bEs = pDbLy->getAt(lyname,(AcDbLayerTableRecord*&)pLayerTblRcd, AcDb::kForRead);
                                    if (bEs == Acad::eOk)
                                    {
                                            AcCmColor color = pLayerTblRcd->color();
                                            iclorIndexResult = color.colorIndex();
                                            pLayerTblRcd->close();
                                    }
                            }
                            pDbLy->close();
                    }
            }
            else if(icolorIndex == 0) //随块
            {
                    ;//待完善
            }
            else
            {
                    iclorIndexResult = icolorIndex;
            }
            return iclorIndexResult;
    }
    回复


    http://www.mjgw.org/ 专业从事膜结构设计、制作加工、施工安装的膜结构工程服务,能够为客户提供专业的膜结构整体解决方案。做中国最好的膜结构综合服务平台。欢迎大家联系电话:198-7840-1958,QQ:463017170.
    相关关键词:膜结构车棚,膜结构车棚覆盖,膜结构车棚公司,膜结构车棚多少钱,膜结构车棚厂家,膜结构车棚价格,社区膜结构车棚,膜结构车棚膜布厂家 ,膜结构车棚哪家好,膜结构车棚多少钱一米,膜结构车棚报价,膜结构车棚哪里有,膜结构车棚定制,膜结构车棚安装,膜结构车棚设计,膜结构车棚电话,膜结构车棚加工,膜结构车棚膜布价格,膜结构车棚批发,膜结构车棚制造商,膜结构车棚生产厂家,膜结构车棚设计,膜结构车棚施工,膜结构车棚多少钱一平米,膜结构车棚订制,张拉膜车棚,张拉膜车棚覆盖,张拉膜车棚公司,张拉膜车棚多少钱,张拉膜车棚厂家,张拉膜车棚价格,社区张拉膜车棚,张拉膜车棚膜布厂家 ,张拉膜车棚哪家好,张拉膜车棚多少钱一米,张拉膜车棚报价,张拉膜车棚哪里有,张拉膜车棚定制,张拉膜车棚安装,张拉膜车棚设计,张拉膜车棚电话,张拉膜车棚加工,张拉膜车棚膜布价格,张拉膜车棚批发,张拉膜车棚制造商,张拉膜车棚生产厂家,张拉膜车棚设计,张拉膜车棚施工,张拉膜车棚多少钱一平米,张拉膜车棚订制,常用膜材品牌:德国杜肯、法国法拉利、德国海德斯、德国米乐、日本平岗、韩国秀博、比利时希运、美国赫虏伯、中国科宝、上海慧遥。

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-23 14:19
  • 签到天数: 1543 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-2-24 15:00 | 显示全部楼层
    建立文本格式表函数
    AcDbObjectId CreateNewTextStyle(){ AcDbTextStyleTable *pTextStyleTable; AcDbTextStyleTableRecord *pTextStyleTableRcd AcDbObjectId textId; acdbHostApplicationServices()->worki...
    AcDbObjectId CreateNewTextStyle()
    {
    AcDbTextStyleTable *pTextStyleTable;
    AcDbTextStyleTableRecord *pTextStyleTableRcd
    AcDbObjectId textId;
    acdbHostApplicationServices()->workingDatabase()->getSymbolTable (pTextStyleTable,AcDb::kForWrite);

    if (!pTextStyleTable->has(StyleName)
    {
      AcDbTextStyleTableRecord *pTSTblRcd= new AcDbTextStyleTableRecord;
      pTSTblRcd->setName(StyleName);
      pTSTblRcd->setFileName(fontName);
      pTSTblRcd->setBigFontFileName(bigfontName);
      pTSTblRcd->setTextSize(textSize);
      pTSTblRcd->setXScale(xScale);
      pTSTblRcd->setObliquingAngle(obliqueAngle);
      pTSTblRcd->setPriorSize(trPercent);
      pTextStyleTable->add(textId,pTextStyleTableRcd);
      pTSTblRcd->close();
    }
    pTextStyleTable->close();
    return textId;

    }
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    推荐膜材品牌上一条 /6 下一条

    进口膜材 国产膜材 pvdf膜材ptfe膜材ETFE膜材
    最好的膜结构公司 一级膜结构资质 膜结构一级资质
    膜结构设计-膜结构十大品牌-etfe设计-充气膜结构
    诺科膜结构
    遨都膜结构设计
    中国膜结构网
    中国空间膜结构

    QQ|申请友链|手机版|中国膜结构论坛