• HFSS 3维曲线导入


    简介

    如图一所示,CST中可以通过导入和到出由任意点组成的曲线,但是HFSS中貌似不能导入(如图二所示),如果我们要将matlab的产生的曲线的点的数据导入特变麻烦,特别是在点特别多的情况。这时可以可以使用脚本导入海量个点所组成的曲线。

    在这里插入图片描述
    在这里插入图片描述

    环境

    python 3.11.5
    Ansys Electronics Desktop 2022 R1
    vscode

    参考

    【1】MATLAB-HFSS-API入门教程-第1讲参考了HFSS的脚本使用的基本的介绍

    代码

    脚本代码由【1】的灵感在HFSS录制出的脚本基础上修改得来。

    
    # ----------------------------------------------
    # Script Recorded by Ansys Electronics Desktop Version 2022.1.0
    # 20:42:37  8? 30, 2023
    # ----------------------------------------------
    import ScriptEnv
    ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
    oDesktop.RestoreWindow()
    oProject = oDesktop.SetActiveProject("Project2")
    oDesign = oProject.SetActiveDesign("HFSSDesign1")
    oEditor = oDesign.SetActiveEditor("3D Modeler")
    list1=[	
        
    		"NAME:Attributes",
    		"Name:="		, "Polyline1",
    		"Flags:="		, "",
    		"Color:="		, "(143 175 143)",
    		"Transparency:="	, 0,
    		"PartCoordinateSystem:=", "Global",
    		"UDMId:="		, "",
    		"MaterialValue:="	, "\"vacuum\"",
    		"SurfaceMaterialValue:=", "\"\"",
    		"SolveInside:="		, True,
    		"ShellElement:="	, False,
    		"ShellElementThickness:=", "0mm",
    		"IsMaterialEditable:="	, True,
    		"UseMaterialAppearance:=", False,
    		"IsLightweight:="	, False
    	
    ]
    list2=["NAME:PolylinePoints"]
    list3=[		"NAME:PolylineParameters",
    		"IsPolylineCovered:="	, True,
    		"IsPolylineClosed:="	, False,]
    list4=	[		
    			["NAME:PolylineSegments",
    				[
    					"NAME:PLSegment",
    					"SegmentType:="		, "Spline",
    					"StartIndex:="		, 0,
    					"NoOfPoints:="		, 10000, #根据文件修改对应的点数(也是文件行数)
    					"NoOfSegments:="	, "0"
    				]
    			]
    		,
    		[
    			"NAME:PolylineXSection",
    			"XSectionType:="	, "None",
    			"XSectionOrient:="	, "Auto",
    			"XSectionWidth:="	, "0mm",
    			"XSectionTopWidth:="	, "0mm",
    			"XSectionHeight:="	, "0mm",
    			"XSectionNumSegments:="	, "0",
    			"XSectionBendType:="	, "Corner"
    		]]
    
    filename = "D:\study\mass\HfssCurve\script\\formalreadfile.txt"
    with open(filename, 'r') as f:
        lines = f.readlines()
    #    print(len(lines))
        linelen=len(lines)
    #可以看到点的数
    out=[]
    filename = "D:\study\mass\HfssCurve\script\\formalreadfile.txt" #保存点位置的txt文件
    with open(filename, 'r') as f:
        lines = f.readlines()
        for line in lines:
            front=line[:line.find(",")]#????????
            front=front+"mm"
    #        print(front)
            end=line[line.find(",")+2:-2]#逗号后面有空格的话是2,没有是1
            end=end+"mm"
    #        print(end)
            temp=["NAME:PLPoint"]
            temp.append("X:=")
            temp.append(str(front))
            temp.append("Y:=")
            temp.append(str(end))
            temp.append("Z:=")
            temp.append("0mm")
            #print(temp)
            out.append(temp)
    sumout=list2+out
    #print(sumout)
    sumout=[sumout]+list4
    #print(sumout)
    list3=list3+sumout
    print(list3)
    oEditor.CreatePolyline(list3,list1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89

    使用

    保存点数文件的格式为坐标由逗号隔开。

     0.00000000000000000,  0.00000000000000000
     0.08071476209794981, -0.00000000141341161
     0.16144074007196085, -0.00000001062903721
     0.24217793799410914, -0.00000003359446055
     0.32292635792965929, -0.00000007424961268
     0.40368599995593835, -0.00000013454769032
     0.48445686218176465, -0.00000021447334575
     0.56523894076671022, -0.00000031206127460
     0.64603222994000231, -0.00000042341775952
     0.72683672202022986, -0.00000054273732530
     0.80765240743457811, -0.00000066232399831
     0.88847927473834076, -0.00000077260898479
     0.96931731063373827, -0.00000086217232820
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    将上述修改对应的路径和点数后保存为.py文件,注意保存格式为ascii(win11的记事本不行),或在vscode保存为windows1252格式,只有这样才能正常使用。
    在这里插入图片描述

    在这里插入图片描述
    在HFSS中运行脚本,Tools=》Run script=》选择刚刚保存的.py文件。

    结果

    在这里插入图片描述
    在这里插入图片描述
    这样就导入了10000个点到HFSS中。

  • 相关阅读:
    python安装pip
    Sentinel-dashboard-X 实现Sentinel高可用及规则数据持久化
    事务+事务并发+事务隔离级别【Interview Question】
    js中的instance,isPrototype和getPrototypeOf的使用,来判断类的关系
    多线程Synchronized锁的使用与线程之间的通讯
    【重拾C语言】十三、动态数据组织(二)链表(创建、遍历检索、插入、删除、交换)
    Ubuntu22.04开启后屏幕黄屏
    【游戏引擎Easy2D】一篇打通引擎基础类型,Point+Size+String+Color(RGBA),可适用于普通题目和引擎详解
    动态链接库(六)--解决不同编译环境导致的名字改编问题
    Windows 批处理的应用(ProtoBuf编译自动化工具)
  • 原文地址:https://blog.csdn.net/qq_32589131/article/details/132642667