设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

In the follwing sample code double rot2; is the rotation of the text you a...

[复制链接]
  • TA的每日心情
    开心
    2021-6-22 09:39
  • 签到天数: 1542 天

    [LV.Master]伴坛终老

    发表于 2021-2-14 22:02 | 显示全部楼层 |阅读模式
    Acad::ErrorStatus setAlignmentPoint(AcDbText &text, const AcGePoint3d &pt)
    {
            if (!text.isWriteEnabled())
                    return Acad::eNotOpenForWrite;

            AcDb::TextHorzMode hmode = text.horizontalMode();
            AcDb::TextVertMode vmode = text.verticalMode();

            if ((hmode == AcDb::kTextLeft) && (vmode == AcDb::kTextBase))
                    return text.setPosition(pt);                // only here position() is relevant and alignmentPoint() not
            else
                    return text.setAlignmentPoint(pt);        // here alignmentPoint() is relevant
    }

    AcGePoint3d getAlignmentPoint(const AcDbText &text)
    {
            AcDb::TextHorzMode hmode = text.horizontalMode();
            AcDb::TextVertMode vmode = text.verticalMode();

            if ((hmode == AcDb::kTextLeft) && (vmode == AcDb::kTextBase))
                    return text.position();                  // only here position() is relevant and alignmentPoint() not
            else
                    return text.alignmentPoint(); // here alignmentPoint() is relevant
    }

    void cmdTestText()
    {
            ads_point    pt;
            ads_name     ent;
            AcDbObjectId objId;

            if (acedEntSel(_T("\nSelect Text: "), ent, pt) != RTNORM)
                    return;

            if (acdbGetObjectId(objId, ent) != Acad::eOk) //ads_name-->AcDbObjectId
                    return;

            Acad::ErrorStatus es;
            AcDbText *pText = NULL;
            AcDbText *pText2 = NULL;
            AcGePoint3d     ptAlign;
            AcGeVector3d        vNormal;
            double          rot = 0.0;
            Adesk::Boolean bMirrX=false, bMirrY=false;

            if ( (es=acdbOpenObject(pText, objId, AcDb::kForRead)) == Acad::eOk )
            {
                    pText2 = AcDbText::cast(pText->clone()); // Create a clone
                    pText2->setDatabaseDefaults();
                    pText2->setColorIndex(1); //red
                    pText2->mirrorInX(false);
                    pText2->mirrorInY(false);

                    ptAlign = getAlignmentPoint(*pText);
                    vNormal = pText->normal();
                    rot = pText->rotation();

                    bMirrX = pText->isMirroredInX();
                    bMirrY = pText->isMirroredInY();
                    pText->close();               
            }

            AcGeVector3d vx, vy, vz(vNormal);
            vx = vz.perpVector();
            vy = (vz.crossProduct(vx)).normalize();

            AcGeVector3d vxRot(vx);
            vxRot.rotateBy(rot, vz); // The rotated x-Axis

            AcGeMatrix3d mat;
            mat.setCoordSystem(ptAlign, vx, vy, vz);

            bool bNeedZMirror = false;

            if (bMirrX)
            {
                    bNeedZMirror = !bNeedZMirror;
                    AcGePlane planeXZ(ptAlign, AcGeVector3d::kYAxis);
                    AcGeMatrix3d matMirrY;
                    matMirrY.setToMirroring(planeXZ);
                    mat.preMultBy(matMirrY);
            }
            if (bMirrY)
            {
                    bNeedZMirror = !bNeedZMirror;
                    AcGePlane plane(ptAlign, AcGeVector3d::kXAxis);
                    AcGeMatrix3d matMirr;
                    matMirr.setToMirroring(plane);
                    mat.preMultBy(matMirr);
            }
            if (bNeedZMirror)
            {
                    // Make sure that mat is not mirroring
                    AcGePlane plane(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis);
                    AcGeMatrix3d matMirr;
                    matMirr.setToMirroring(plane);
                    mat.preMultBy(matMirr);
            }

            AcGeVector3d vx2, vy2, vz2;
            AcGePoint3d origin;
            mat.getCoordSystem(origin, vx2, vy2, vz2);

            // Calculate rotation value of vxRot with respect to vx2 and vz2
            double rot2 = vx2.angleTo(vxRot, vz2);

            // Create a second Text entity without mirroring
            pText2->setNormal(vz2);
            pText2->setRotation(rot2);
            postToDb(pText2);
            es = setAlignmentPoint(*pText2, ptAlign);
            es = pText2->adjustAlignment();
            pText2->close();


    在下面的示例代码double rot2;中,是要查找的文本的旋转。



    函数void cmdTestText()要求选择文本。然后创建一个外观相同的红色文本副本,该文本的两个镜像标志都设置为false,并将其添加到数据库中。
    回复


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

    使用道具 举报

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

    本版积分规则

    关闭

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

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

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