首页 > 其他分享 >TopoDS_Shape的拷贝

TopoDS_Shape的拷贝

时间:2024-07-23 13:28:53浏览次数:13  
标签:tool Shape shape copying 拷贝 TopoDS

TopoDS_Shape的拷贝有两种方式

1) TopoDS_Shape newShape = oldShape;

2) BRepBuilderAPI_Copy tool;
tool.perform(oldShape,true,false); //! "false" since I'm not interested in copying the triangulation
newShape = tool.Shape();

两者的不同在于shape数据的拷贝深度,

TopoDS_Shape newShape = oldShape;

这个是浅拷贝,及新图形与老图形共享相同的几何数据,如果修改了新图形,老图形也随之修改,因为它们的数据是通过智能指针Handle(TopoDS_TShape)进行共享,而TopLoc_Location和TopAbs_Orientation拥有各自的参数,不进行共享。

BRepBuilderAPI_Copy tool; tool.perform(oldShape, true, false); // "false" since I'm not interested in copying the triangulation newShape = tool.Shape();

通过类BRepBuilderAPI_Copy 创建一个原始图形的深拷贝,这意味着新图形的几何信息与老图形是相互对立的,第二个参数是控制Location是否拷贝(True为拷贝,False为共享),第三个参数为是否拷贝三角化数据(True为拷贝,False为不拷贝)This method uses the BRepBuilderAPI_Copy class to create a deep copy of the original shape. This means that a completely new geometric representation is created for the new shape, independent of the old shape. This allows you to modify the new shape without affecting the original one. The second parameter in the perform() function controls the copying of locations (True for copying, False for sharing). The third parameter controls the copying of the triangulation (True for copying, False for not copying).

标签:tool,Shape,shape,copying,拷贝,TopoDS
From: https://www.cnblogs.com/unicornsir/p/18318160

相关文章

  • 【c++经典面试题】有关string类的深浅拷贝
    题目背景基于自实现string类substr成员函数时遇到的问题。代码展示stringstring::substr(size_tpos,size_tlen)//声明时len的参省值位npos { assert(pos<_size); if(len>_size-pos)//如果len的长度大于有效字符长度,那么重置为有效字符长度 { le......
  • 数据共享(浅拷贝)与数据独立(深拷贝)
    在FFmpeg中,数据共享和数据独立的区别在于浅拷贝和深拷贝的使用。让我们详细探讨这两个概念及其在FFmpeg内存模型中的实现。数据共享(浅拷贝)浅拷贝是指在拷贝对象时,只拷贝对象的引用,而不拷贝实际的数据内容。对于FFmpeg中的AVPacket来说,浅拷贝意味着两个Packet共享同一个数据缓冲......
  • 34.拷贝数组
    定义一个方法:copyOfRange(int[]arr,intx,inty)将数组arr中从索引x开始(包含x)到索引y结束(不包含y)中的元素,复制到新数组中,并将新数组返回例:原始数组arr={1,2,3,4,5,6,7,8,9},新数组newArr={4,5,6,7}publicstaticvoidmain(String[]args){//1.静态初始化定......
  • C/C++ 《二级指针浅拷贝》
    背景A对象内部属性a属于int,动态分配内存回收,析构函数deleteA**aptr=newA[10]申请10个空间长度的A*类型测试浅拷贝测试代码#include<iostream>usingnamespacestd;classA{public:int*a;A(inti){//构造函数a=newint(i);}~A(......
  • 从零开始学Java(超详细韩顺平老师笔记梳理)05——数组(语法,赋值机制,拷贝反转)、排序(冒泡排
    文章目录前言一、数组1.基础语法1)介绍2)使用(动态、静态初始化语法与使用)3)注意事项和细节2.数组赋值机制(ArryAssign)3.数组拷贝4.数组反转(reserve)5.数组的扩容与缩减二、排序三、查找四、二维数组(TwoDimensionalArry)1.快速入门2.使用3.案例:打印一个10行的......
  • 【发现】croc_轻松安全地在电脑之间拷贝文件
    https://schollz.com/tinker/croc6作者宣发了croc:一种快速、安全和简单的文件传输工具。传输文件的方式有很多种,而对这些方式来说最重要的是三点:快速安全简单(最重要)croc目的是做出满足这三点的传输工具。croc使用中继传输而不是上传再下载,提高传输速度。使用基于pake......
  • python笔记:赋值,浅拷贝和深拷贝
    在Python中,变量赋值、浅拷贝和深拷贝在处理对象时有不同的行为和应用场景。以下是它们的详细区别:1.赋值赋值操作只是创建了一个新的引用(别名)来指向同一个对象。也就是说,赋值操作并不创建新的对象,原始对象和赋值后的变量指向同一块内存区域。a=[1,2,3]b=a#b是a......
  • 【发现】_croc_轻松安全地在电脑之间拷贝文件
    https://schollz.com/tinker/croc6作者宣发了croc:一种快速、安全和简单的文件传输工具。传输文件的方式有很多种,而对这些方式来说最重要的是三点:快速安全简单(最重要)croc目的是做出满足这三点的传输工具。croc使用中继传输而不是上传再下载,提高传输速度。使用基于pake......
  • python 中深浅拷贝
    #等号赋值#l0=[1,3,5]#l2=[1,3,5]#l0.append(7)#print(l0,l2)#print(l0==l2,l0isl2,id(l0),id(l2))#等号赋值:直接赋予内存地址两个变量最终还是同一个内存地址#修改一个另一个同步更改#l0=[1,3,5]#l2=l0#l0.append(7)#pri......
  • c/c++ 浅拷贝与深拷贝
    浅拷贝与深拷贝的区别浅拷贝:简单的赋值拷贝操作深拷贝:在堆区重新申请空间,进行拷贝操作默认情况下对象拷贝是浅拷贝(深拷贝要自己实现拷贝函数)classPerson{public: //无参(默认)构造函数 Person(){ cout<<"无参构造函数!"<<endl; } //有参构造函数 Person(in......