luceda ipkiss教程 58:输出器件的版图和三维模型

在ipkiss中,通过visualize_3d_povray可以输出包含器件的三维模型参数的.pov文件,再通过POV-Ray(免费软件,下载地址:https://www.povray.org/download/)就可以查看器件的三维模型。
如:
在这里插入图片描述

代码如下:

from si_fab import all as pdk
from ipkiss3 import all as i3
import numba as nb
import numpy as np
from matplotlib import pyplot as plt# Building the MMI PCell with properties that describe its geometry
class MMI1x2(i3.PCell):"""MMI with 1 input and 2 outputs."""_name_prefix = "MMI1x2"trace_template = i3.TraceTemplateProperty(doc="Trace template of the access waveguide")width = i3.PositiveNumberProperty(default=4.0, doc="Width of the MMI section.")length = i3.PositiveNumberProperty(default=20.0, doc="Length of the MMI secion.")taper_width = i3.PositiveNumberProperty(default=1.0, doc="Width of the taper.")taper_length = i3.PositiveNumberProperty(default=5.0, doc="Length of the taper")waveguide_spacing = i3.PositiveNumberProperty(default=2.0, doc="Spacing between the waveguides.")def _default_trace_template(self):return pdk.SiWireWaveguideTemplate()class Layout(i3.LayoutView):def _generate_elements(self, elems):length = self.lengthwidth = self.widthtaper_length = self.taper_lengthtaper_width = self.taper_widthhalf_waveguide_spacing = 0.5 * self.waveguide_spacingcore_layer = self.trace_template.core_layercladding_layer = self.trace_template.cladding_layercore_width = self.trace_template.core_width# Si coreelems += i3.Rectangle(layer=core_layer,center=(0.5 * length, 0.0),box_size=(length, width),)elems += i3.Wedge(layer=core_layer,begin_coord=(-taper_length, 0.0),end_coord=(0.0, 0.0),begin_width=core_width,end_width=taper_width,)elems += i3.Wedge(layer=core_layer,begin_coord=(length, half_waveguide_spacing),end_coord=(length + taper_length, half_waveguide_spacing),begin_width=taper_width,end_width=core_width,)elems += i3.Wedge(layer=core_layer,begin_coord=(length, -half_waveguide_spacing),end_coord=(length + taper_length, -half_waveguide_spacing),begin_width=taper_width,end_width=core_width,)# Claddingelems += i3.Rectangle(layer=cladding_layer,center=(0.5 * length, 0.0),box_size=(length + 2 * taper_length, width + 2.0),)return elemsdef _generate_ports(self, ports):length = self.lengthtaper_length = self.taper_lengthtrace_template = self.trace_templatehalf_waveguide_spacing = 0.5 * self.waveguide_spacingports += i3.OpticalPort(name="in1",position=(-taper_length, 0.0),angle=180.0,trace_template=trace_template,)ports += i3.OpticalPort(name="out1",position=(length + taper_length, -half_waveguide_spacing),angle=0.0,trace_template=trace_template,)ports += i3.OpticalPort(name="out2",position=(length + taper_length, half_waveguide_spacing),angle=0.0,trace_template=trace_template,)return portsclass Netlist(i3.NetlistFromLayout):passif __name__ == '__main__':MMI1x2().Layout().write_gdsii("mmi.gds")MMI1x2().Layout().visualize_3d_povray(camera_pos=(30,30,20))

camera_pos的参数可以在POV-Ray中调整:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/646827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何安装MeterSphere并实现无公网ip远程访问服务管理界面

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通…

《微信小程序开发从入门到实战》学习九十二

7.1 视图容器组件 7.1.2 scroll-view组件 设置滚动条位置时默认是没有动画过渡的,scroll-with-animation设置为true即可开启动画过渡效果。 enable-back-to-top设置为true,用户单击标题栏可以让scroll-view中的内容快速地回到最顶部。iOS单击标题栏即…

vivado 接口、端口映射

接口 重要&#xff01;接口只能在“fpga”类型的&#xff1c;component&#xff1e;中定义。接口部分提供了<component>上所有可用物理接口的列表。<interfaces>部分包含嵌套在其中的一个或多个<interface>标记。一个接口是通过使用<port_map>标记由多…

Spring 声明式事务讲解,和 @Transactional注解的用法

目录 一、Spring框架介绍 二、什么是声明式事务 三、如何解决并发性事务问题 四、Transactional注解的用法 一、Spring框架介绍 Spring框架是一个开源的Java应用程序开发框架&#xff0c;旨在简化企业级Java应用程序的开发。它提供了一种轻量级的、全面的编程和配置模型&a…

进阶C语言-自定义类型

为了便于描述复杂的对象,C语言就支持了自定义类型&#xff0c;其中包括了结构体、枚举和联合体&#xff0c;下面将为大家一一介绍。 自定义类型 &#x1f388;1.结构体&#x1f50e;1.1结构的基础知识&#x1f50e;1.2结构的声明&#x1f50e;1.3特殊的声明&#x1f50e;1.4结构…

基于springboot在线学习平台源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括学习平台的网络应用&#xff0c;在外国学习平台已经是很普遍的方式&#xff0c;不过国内的管理平台可能还处于起步阶段。学习平台具有学习信息管理功能的选择。学习平台采用ja…

每天掌握一个软测高级技巧:接口自动化神器apin进阶操作

之前写了一篇关于接口自动化框架 apin 入门使用是文章&#xff0c;主要介绍了 apin 的安装以及用例编写的方法。 今天这篇文章来给大家聊聊&#xff0c;apin 中的一些高级使用技巧。比如依赖接口的变量提取和引用&#xff0c;用例断言&#xff0c;以及函数工具的使用。 01 变…

web安全学习笔记【09】——算法2

基础[1] 入门-算法逆向&散列对称非对称&JS源码逆向&AES&DES&RSA&SHA #知识点&#xff1a; 1、Web常规-系统&中间件&数据库&源码等 2、Web其他-前后端&软件&Docker&分配站等 3、Web拓展-CDN&WAF&OSS&反向&负载…

Web09--jQuery基础

1、jQuery概述 1.1 什么是jQuery jQuery是一款优秀的JavaScript的轻量级框架之一&#xff0c;封装了DOM操作、事件绑定、ajax等功能。特别值得一提的是基于jQuery平台的插件非常丰富&#xff0c;大多数前端业务场景都有其封装好的工具可直接使用。 jQuery下载和版本介绍 官…

Make.com的发送邮件功能已经登峰造极

make.com的发送邮件功能已经做到了登峰造极。 我给你个任务&#xff0c;让你发送个新邮件给谁谁&#xff0c;你一定想到SMTP服务器不就行了。 我给你第二个任务&#xff0c;我让你自动回复一个邮件&#xff0c;注意是回复。 做不到了吧&#xff5e;&#xff5e;&#xff01;…

TS基础知识点快速回顾(上)

基础介绍 什么是 TypeScript&#xff1f; TypeScript&#xff0c;简称 ts&#xff0c;是微软开发的一种静态的编程语言&#xff0c;它是 JavaScript 的超集。 那么它有什么特别之处呢? js 有的 ts 都有&#xff0c;所有js 代码都可以在 ts 里面运行。ts 支持类型支持&#…

一篇部署frp

利用宝塔第三方插件安装Frp穿透 参考网址&#xff1a;https://blog.csdn.net/qq_17754023/article/details/127438606 宝塔官方第三方插件下载 https://www.bt.cn/bbs/forum.php?modattachment&aidMzQ5MDF8MTBmM2E3YTh8MTYxNDk1MTY4MXwwfDM1OTY3 网盘下载&#xff1a; …

HTTP 基本概念

1. HTTP &#xff08;Hypertext Transfer Protocol&#xff09;超文本传输协议&#xff0c;是互联网上应用最为广泛的协议之一。 小林coding的解析特别通俗易懂 https://xiaolincoding.com/network/2_http/http_interview.html#http-%E6%98%AF%E4%BB%80%E4%B9%88 协议&#…

橘子学Mybatis09之Mybatis关于二级缓存的使用

前面我们说了一级缓存&#xff0c;但是实际上我们说那玩意其实不咋实用。于是既然设计了缓存体系&#xff0c;就不可能弄个不实用的给人们。所以这里就引出二级全局缓存。 全局缓存就是无视sqlSession&#xff0c;你可以理解为一个分布式的缓存。作为全局的访问。 一、二级缓存…

爬虫工作量由小到大的思维转变---<第三十九章 Scrapy-redis 常用的那个RetryMiddleware>

前言: 为什么要讲这个RetryMiddleware呢?因为他很重要~ 至少在你装配代理ip或者一切关于重试的时候需要用到!----最关键的是:大部分的教学视频里面,没有提及这个!!!! 正文: 源代码分析 这个RetryMiddleware是来自: from scrapy.downloadermiddlewares.retry import Retry…

Transfomer相关最新研究

文章目录 LogTrans * (有代码&#xff09;TFT &#xff08;有代码&#xff09;InfluTran &#xff08;有代码&#xff09;Informer *&#xff08;有代码&#xff09;&#xff08;长时间&#xff09;ProTranAutoformer ***&#xff08;有代码&#xff09;AliformerPyraformer &a…

JRT的无源码发布

之前介绍过JRT最大的特点就是业务脚本化。老javaer就会说你业务代码都在发布环境放着&#xff0c;那怎么代码保密&#xff0c;在发布环境别人随便改了启不是不安全&#xff0c;或者一些代码我就是不想让人看源码呢。 其实JRT的业务脚本化只是特性&#xff0c;不是代表就必须要…

选择排序(堆排序和topK问题)

选择排序 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据元素排完 。 如果我们用扑克牌来举例&#xff0c;那么选择排序就像是提前已经把所有牌都摸完了&#xff0c;而再进行牌…

git commit 描述如何修改

git Commit 描述写错了&#xff0c;如何修改_git提交描述错误怎么修改-CSDN博客 1.git commit --amend 2.按一下 i 键&#xff0c;进入插入模式 3.修改成描述 4.按 esc 键退出&#xff0c;然后按shift:&#xff0c;然后输入 wq 就完成修改了

ROS1工作空间内多个包先后编译顺序、包内编译顺序

在ros工作空间里有packageA和packageB两个包&#xff0c;其中第二个包依赖第一个包。除了packageB的CMakeLists.txt中的find_package要加入第一个包外&#xff0c;还需要修改package.xml&#xff0c;保证catkin_make的编译顺序&#xff1a; packageB的package.xml&#xff1a;…