qtablewidget 选中不改变背景_C4D制作不一样的核壳结构

本文介绍了如何使用C4D软件创建三维模型,特别是通过小球堆叠和刚体碰撞模拟,来表现纳米结构的核壳设计。详细步骤包括目标形状建模、克隆填充、动力学碰撞排列,以及最终的渲染设置。这种方法适合任何封闭多边形模型,推荐C4D作为科研绘图的三维建模工具。
摘要由CSDN通过智能技术生成

127e48f7-9422-eb11-8da9-e4434bdf6706.png

在科研绘图中,三维模型图相对于二维平面图片可以展示更多的信息,尤其是在做纳米结构设计和制备时,三维模型图可以直观地表现出材料的设计思路和合成路径。比如在这篇发表于Joule杂志的高水平、高颜值、将纳米美学展现的淋漓尽致的paper中(Ref. Joule 2018; 2: 725-735.),采用三维模型直观地表达出材料的合成路径。配色和谐,细节丰富:这组三维模型图的一个巧妙之处在于用不规则堆叠的小球来表示SnO2层,代表SnO2是由颗粒状纳米晶堆叠而成的。

三维模型图

157e48f7-9422-eb11-8da9-e4434bdf6706.png

下面就来为大家介绍一种C4D软件中任意形状小球堆叠模型的建模方法。

具体的建模路径是:目标多边形的外形建模→克隆小球填充目标多边形→动力学碰撞使其规则排列。(如果需要小球之间相互部分融合的效果,则再加上一步体积生成)

具体完成效果如下图所示:

177e48f7-9422-eb11-8da9-e4434bdf6706.png

打开C4D,这里以R20版本为例

1.首先进行多边形建模,制作目标形状的几何外形。

这里以切口球壳为例

1.1 首先在几何体菜单栏创建一个球体(默认半径100)。

187e48f7-9422-eb11-8da9-e4434bdf6706.png

1.2 选中球体,点击转化为可编辑多边形(或键盘C键)。

197e48f7-9422-eb11-8da9-e4434bdf6706.png

1.3 在选择工具选择框选模式,左侧选择面模式,

在 PyQt 中,`QTableWidgetItem` 本身不直接提供设置背景图片的接口。但是,你可以通过自定义 `QTableWidgetItem` 的绘制来实现背景图片的效果。一个常见的方法是重写 `QTableWidget` 的 `paintEvent` 方法或者使用 `QStyleOptionViewItem` 来自定义绘制。下面是一个简单的例子,展示了如何为表格项设置背景图片: ```python from PyQt5 import QtWidgets, QtGui class CustomTableItem(QtWidgets.QTableWidgetItem): def __init__(self, text, image_path, *args, **kwargs): super().__init__(text, *args, **kwargs) self._image_path = image_path def paintCell(self, painter): # 绘制背景图片 image = QtGui.QImage(self._image_path) image = image.scaled(self.size(), QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) painter.drawImage(0, 0, image) # 调用默认的绘制函数来绘制文本等其他内容 super().paintCell(painter) class MyTableWidget(QtWidgets.QTableWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setItemDelegate(CustomTableItem) def paintEvent(self, event): opt = QtGui.QStyleOptionViewItem(self) self.initStyleOption(opt) for row in range(self.rowCount()): for col in range(self.columnCount()): self.initStyleOption(opt, row, col) item = self.item(row, col) if isinstance(item, CustomTableItem): item.paintCell(self.style().Painter(selfviewport())) else: super().paintCell(event) super().paintEvent(event) # 使用例子 table = MyTableWidget(5, 3) # 创建一个5行3列的表格 item = CustomTableItem('Text', 'path/to/image.png') table.setItem(0, 0, item) ``` 在这个例子中,我们创建了一个自定义的 `CustomTableItem` 类,它继承自 `QTableWidgetItem` 并重写了 `paintCell` 方法来绘制背景图片。然后我们创建了一个 `MyTableWidget` 类,它重写了 `paintEvent` 方法以使用我们的自定义项。 请注意,上述代码是一个概念性的示例,可能需要根据实际的应用场景进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值