news 2026/8/2 22:25:07

ExtractSelectionUsingCells选择和提取三维模型中的特定单元(Cell)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ExtractSelectionUsingCells选择和提取三维模型中的特定单元(Cell)

一:主要的知识点

1、说明

本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客

2、知识点纪要

本段代码主要涉及的有①通过特定索引取得网格面模型


二:代码及注释

import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkCommonCore import vtkIdTypeArray from vtkmodules.vtkCommonDataModel import vtkSelection, vtkSelectionNode, vtkUnstructuredGrid from vtkmodules.vtkFiltersExtraction import vtkExtractSelection from vtkmodules.vtkFiltersSources import vtkSphereSource from vtkmodules.vtkRenderingCore import ( vtkActor, vtkCamera, vtkDataSetMapper, vtkProperty, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors = vtkNamedColors() sphereSource = vtkSphereSource() sphereSource.Update() ids = vtkIdTypeArray() ids.SetNumberOfComponents(1) for i in range(10, 20): ids.InsertNextValue(i) selectionNode = vtkSelectionNode() selectionNode.SetFieldType(vtkSelectionNode.CELL) selectionNode.SetSelectionList(ids) selectionNode.SetContentType(vtkSelectionNode.INDICES) selection = vtkSelection() selection.AddNode(selectionNode) extractSelection = vtkExtractSelection() extractSelection.SetInputConnection(0, sphereSource.GetOutputPort()) extractSelection.SetInputData(1, selection) extractSelection.Update() selected = vtkUnstructuredGrid() selected.ShallowCopy(extractSelection.GetOutput()) selectionNode.GetProperties().Set(vtkSelectionNode.INVERSE(), 1) #取反,1表示取反状态启用? extractSelection.Update() notSelected = vtkUnstructuredGrid() notSelected.ShallowCopy(extractSelection.GetOutput()) backfaces = vtkProperty() backfaces.SetColor(colors.GetColor3d("Gold")) inputMapper = vtkDataSetMapper() inputMapper.SetInputConnection(sphereSource.GetOutputPort()) inputActor = vtkActor() inputActor.SetMapper(inputMapper) inputActor.GetProperty().SetColor(colors.GetColor3d("MistyRose")) inputActor.SetBackfaceProperty(backfaces) selectedMapper = vtkDataSetMapper() selectedMapper.SetInputData(selected) selectedActor = vtkActor() selectedActor.SetMapper(selectedMapper) selectedActor.SetBackfaceProperty(backfaces) selectedActor.GetProperty().SetColor(colors.GetColor3d('MistyRose')) notSelectedMapper = vtkDataSetMapper() notSelectedMapper.SetInputData(notSelected) notSelectedActor = vtkActor() notSelectedActor.SetMapper(notSelectedMapper) notSelectedActor.SetBackfaceProperty(backfaces) notSelectedActor.GetProperty().SetColor(colors.GetColor3d('MistyRose')) # There will be one render window renderWindow = vtkRenderWindow() renderWindow.SetSize(900, 300) renderWindow.SetWindowName('ExtractSelectionCells') # And one interactor interactor = vtkRenderWindowInteractor() interactor.SetRenderWindow(renderWindow) # Define viewport ranges # (xmin, ymin, xmax, ymax) leftViewport = [0.0, 0.0, 0.33, 1.0] centerViewport = [0.33, 0.0, 0.66, 1.0] rightViewport = [0.66, 0.0, 1.0, 1.0] # Create a camera for all renderers camera = vtkCamera() # Setup the renderers leftRenderer = vtkRenderer() renderWindow.AddRenderer(leftRenderer) leftRenderer.SetViewport(leftViewport) leftRenderer.SetBackground(colors.GetColor3d('BurlyWood')) leftRenderer.SetActiveCamera(camera) centerRenderer = vtkRenderer() renderWindow.AddRenderer(centerRenderer) centerRenderer.SetViewport(centerViewport) centerRenderer.SetBackground(colors.GetColor3d('orchid_dark')) centerRenderer.SetActiveCamera(camera) rightRenderer = vtkRenderer() renderWindow.AddRenderer(rightRenderer) rightRenderer.SetViewport(rightViewport) rightRenderer.SetBackground(colors.GetColor3d('CornflowerBlue')) rightRenderer.SetActiveCamera(camera) leftRenderer.AddActor(inputActor) centerRenderer.AddActor(selectedActor) rightRenderer.AddActor(notSelectedActor) leftRenderer.ResetCamera() renderWindow.Render() interactor.Start() if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/2 18:14:36

Glyph2D 同一个图形根据点云的输入产生不同位置的输出

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①同时生成多个坐标的相同模型,…

作者头像 李华
网站建设 2026/8/2 12:36:41

Lombok 注解:简化 Java 代码

目录一、深入理解 Lombok 注解:简化 Java 代码的利器二、Lombok 简介1、安装 Lombok1、Maven2、Gradle二、常用 Lombok 注解及示例1. Getter 和 Setter2. ToString3. EqualsAndHashCode4. NoArgsConstructor、RequiredArgsConstructor 和 AllArgsConstructor5. Data…

作者头像 李华
网站建设 2026/8/2 18:50:38

别让大数据“全表扫描”掏空你:数据分区策略与分区裁剪的实战心经

别让大数据“全表扫描”掏空你:数据分区策略与分区裁剪的实战心经 大家好,我是 Echo_Wish。今天不聊那些高屋建瓴的框架宣传,我们来点接地气的——数据分区策略怎么做才有效?分区裁剪怎么让查询跑得飞? 这话题其实特别…

作者头像 李华
网站建设 2026/8/2 6:14:04

(转载)真正的缘分,“推背感”都跟强

这个推背感就是:除了这个,其余没得选。 讲个真实故事。 有个前同事,在广告行业混了八年,前年公司裁员,他是第一批走的。原以为凭资历很快能找到下家,结果投了上百份简历,只有三家小公司给了面…

作者头像 李华
网站建设 2026/8/2 1:02:29

Hadoop生态下的数据预处理:MapReduce实战案例解析

Hadoop生态下的数据预处理:从理论到MapReduce实战的完整指南 一、引言:为什么数据预处理是大数据分析的“地基”? 你是否遇到过这样的场景? 拿到一份TB级的电商用户行为日志,却发现里面混着缺失关键字段的记录(比如没有用户ID)、格式混乱的时间戳(比如1620000000000)…

作者头像 李华