首页 > 其他分享 >OCC复制Shape

OCC复制Shape

时间:2022-09-26 17:13:53浏览次数:55  
标签:Handle OCC AIS Shape 复制 srcIter TopoDS BRep

void occQt::makeBox()
{
    
    // 新建BOX
    TopoDS_Shape aTopoBoxA = BRepPrimAPI_MakeBox(3.0, 4.0, 5.0).Shape();
    
    //复制shape
    BRepBuilderAPI_Copy aShapeCopy;
    aShapeCopy.Perform(aTopoBoxA);
    TopoDS_Shape aTopoBoxB = aShapeCopy.Shape();
    
    //平移,防止2个BOX重叠
    gp_Trsf aTrsf;
    aTrsf.SetTranslation(gp_Vec(4.0, 0.0, 0.0));
    aTopoBoxB.Move(TopLoc_Location(aTrsf));
    
    //显示BOX
    Handle(AIS_Shape) anAisBoxA = new AIS_Shape(aTopoBoxA);
    anAisBoxA->SetColor(Quantity_NOC_AZURE);
    
    Handle(AIS_Shape) anAisBoxB = new AIS_Shape(aTopoBoxB);
    anAisBoxB->SetColor(Quantity_NOC_AZURE);
    
    myOccView->getContext()->Display(anAisBoxA, Standard_True);
    myOccView->getContext()->Display(anAisBoxB, Standard_True);
    
    //删除所有shape
    //myOccView->getContext()->RemoveAll(Standard_True);
    
}

如果是 pcurve,需要手动处理

详见:https://dev.opencascade.org/content/how-properly-copy-topodsshape

int CopyEdgeAndPCurve(const TopoDS_Edge& srcEdge, TopoDS_Edge& newEdge)
{
    int count = 0;
    BRepBuilderAPI_Copy copier(srcEdge);
    newEdge = TopoDS::Edge(copier.Shape());
    
    BRep_ListOfCurveRepresentation& srcCurList = (*((Handle(BRep_TEdge)*)&srcEdge.TShape()))->ChangeCurves();
    BRep_ListIteratorOfListOfCurveRepresentation srcIter(srcCurList);
    BRep_ListOfCurveRepresentation& newCurList = (*((Handle(BRep_TEdge)*)&newEdge.TShape()))->ChangeCurves();
    
    while (srcIter.More())
    {
        const Handle(BRep_CurveRepresentation)& cr = srcIter.Value();
        try
        {
            cr->PCurve();
            newCurList.Append(cr);
            ++count;
        }
        catch(...)
        {
        }
        srcIter.Next();
    }
    return count;
}

标签:Handle,OCC,AIS,Shape,复制,srcIter,TopoDS,BRep
From: https://www.cnblogs.com/zhangliuliu/p/16731607.html

相关文章

  • 复制流报错:Latest checkpoint is at 2/7C3079A0 on timeline 1, but in the history o
    我的测试环境从PostgreSQL9.6.0异步复制流通过pg_upgrade方式升级到14.5,通过rsync将primary数据传输到standby端[postgres]]#rsync-avzpostgres@standby:/data/postgr......
  • MySQL半同步复制的实现和复制过滤器
    异步:当客户端发送给服务端请求时,在等待服务端响应的时候,客户端可以做其他的事情,这样节约了时间,提高了效率。同步:当客户端发送请求给服务端,在等待服务端响应的请求时,客户......
  • MySQL的主从复制和分库分表初探
    主从复制+分库分表要讲主从复制,首先来看看MySQL自带的日志文件。日志错误日志错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行......
  • 09第九章:【01】Docker复杂安装—MySQL主从复制
    一、MySQL主从复制原理需要掌握MySQL主从复制原理二、MySQL主从搭建步骤1、创建主服务容器新建主服务器容器实例3307docker run -p 3307:3306 --name mysql......
  • MySQL主从复制常见问题及解决方法
    在从节点清除信息前提:停止slave的相关线程:stopslaveRESETSLAVE#从服务器清除master.info,relay-log.info,relaylog,开始新的relaylogRESETSLAVE ALL#清除所......
  • MySql主从复制
    Mysql主从复制是MySql数据库自带的功能,是多台Mysql数据库(salve,从库)从另一台MySql数据库(master,主库)进行日志复制再解析并应用到自身,最终实现从库的数据和主库的数据保......
  • SAP Commerce Cloud OCC API UnknownResourceError 错误
    错误消息:{"errors":[{"message":"Thereisnoresourceforpath/occ/v2/powertools/xxx/","type":"UnknownResourceError"......
  • MySQL主从复制
      mysql支持两种复制:1:一种为语句复制。好处是:简单,不会占用很多宽带和IO。坏处是:同一条SQL主从执行的时间不同。或者一些时间戳,存储过程,触发器可能都会有问题。更新......
  • 复制老师的博客
    脸都不要了.#切换到yum目录[root@controller~]#cd/etc/yum.repos.d/#创建备份目录[[email protected]]#mkdirrepo.bak[[email protected]......
  • 验证码输入框粘贴复制
    <divclass="box"><divclass="field-list"><divclass="field-item"></div><divclass="field-item"></div><divclass="field-item"></div&g......