Click or drag to resize

Adding Structures

The script below shows how you can create a box using the discovery API, then apply Thin Seam, This Surface, and Thin Gap definitions to the geometry.

Structure Creation
# Python Script, API Version = V251
ClearAll()
# Sketch Rectangle
plane = Plane.PlaneXY
result = ViewHelper.SetSketchPlane(plane)
point1 = Point2D.Create(MM(0),MM(0))
point2 = Point2D.Create(MM(-200),MM(0))
point3 = Point2D.Create(MM(-200),MM(200))
result = SketchRectangle.Create(point1, point2, point3)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[0].GetChildren[ICurvePoint]()[0])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumPoint]()[0])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[3].GetChildren[ICurvePoint]()[1])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumPoint]()[0])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[2].GetChildren[ICurvePoint]()[1])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[1])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[3].GetChildren[ICurvePoint]()[0])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[1])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[0].GetChildren[ICurvePoint]()[1])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[0])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[1].GetChildren[ICurvePoint]()[0])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[0])

result = Constraint.CreateCoincident(baseSel, targetSel)
# EndBlock


# Solidify Sketch
mode = InteractionMode.Solid
result = ViewHelper.SetViewMode(mode, None)
# EndBlock

# Extrude Edges
root = GetRootPart()
edges = root.Bodies[0].Edges
print(edges)
options = ExtrudeEdgeOptions()
faceSelection = FaceSelection.Create(GetRootPart().Bodies[0].Faces[0])
for edge in edges:
    edgeSel = EdgeSelection.Create(edge)
    ExtrudeEdges.Execute(edgeSel, faceSelection, MM(200), options)

# Split Faces
options = SplitFaceOptions()
selection = FaceSelection.Create(GetRootPart().Bodies[0].Faces[4])
point = FaceSelection.Create(GetRootPart().Bodies[0].Faces[4]).Items[0].EvalProportion(0, 0).Point
result = SplitFace.ByParametric(selection, point, FaceSplitType.UV, options)
# EndBlock

# Split Faces
options = SplitFaceOptions()
selection = FaceSelection.Create(GetRootPart().Bodies[0].Faces[4])
startPoint = EdgeSelection.Create(GetRootPart().Bodies[0].Edges[10]).Items[0].EvalProportion(0).Point
endPoint = EdgeSelection.Create(GetRootPart().Bodies[0].Edges[5]).Items[0].EvalProportion(0).Point
result = SplitFace.ByTwoPoints(selection, startPoint, endPoint, options)
# EndBlock

# Import EMA API
import clr
apipath = "ema3d.Api.V25.dll"
clr.AddReferenceToFileAndPath(apipath)
# EMA API Imports
import ema3d.Api.V25.Core as Core

# get document and body
doc = Window.ActiveWindow.Document
root = GetRootPart()
bodies = root.Bodies

# get domain
domain = Core.Domain.Domain.GetInstance(doc)
Core.Domain.Domain.ResetDomainBounds(domain)

# Set Thin Seam Definition
thindef = Core.Definitions.ThinSeamDefinition.Create(doc)
thindef.Inductance = 125
thindef.Capacitance = 150
thindef.Resistance = 130
thindef.Name = "Thin Seam Definition"
line = bodies[0].Edges[0]
thindef.AssignSingle(line)
print(Core.Definitions.ThinSeamDefinition.GetDefinitions(doc))
print(Core.Definitions.ThinSeamDefinition.GetNames(doc))

# Set Thin Surface Definition
thindef = Core.Definitions.ThinSurfaceDefinition.Create(doc)
thindef.Sigma = 100
thindef.Epsilon = 150
thindef.Mu = 130
thindef.SigmaM = 100
thindef.Thickness = 100
thindef.Name = "Thin Surface Definition"
face = bodies[0].Faces[0]
thindef.AssignSingle(face)
print(Core.Definitions.ThinSurfaceDefinition.GetDefinitions(doc))
print(Core.Definitions.ThinSurfaceDefinition.GetNames(doc))

# Set Thin Gap 
thindef = Core.Definitions.ThinGapDefinition.Create(doc)
thindef.Width = 10
thindef.Conductivity = 100
thindef.Permittivity = 100
thindef.Name = "Thin Gap Definition"
thinEdge = root.Bodies[0].Edges[12]
thindef.AssignSingle(thinEdge)
print(Core.Definitions.ThinGapDefinition.GetDefinitions(doc))
print(Core.Definitions.ThinGapDefinition.GetNames(doc))
Seam Creation
# Sketch Rectangle
point1 = Point2D.Create(MM(0),MM(0))
point2 = Point2D.Create(MM(-20),MM(0))
point3 = Point2D.Create(MM(-20),MM(-20))
result = SketchRectangle.Create(point1, point2, point3)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[0].GetChildren[ICurvePoint]()[0])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumPoint]()[0])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[3].GetChildren[ICurvePoint]()[1])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumPoint]()[0])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[2].GetChildren[ICurvePoint]()[1])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[1])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[3].GetChildren[ICurvePoint]()[0])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[1])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[0].GetChildren[ICurvePoint]()[1])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[0])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[1].GetChildren[ICurvePoint]()[0])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[0])

result = Constraint.CreateCoincident(baseSel, targetSel)
# EndBlock

# Sketch Rectangle
point1 = Point2D.Create(MM(-20),MM(-20))
point2 = Point2D.Create(MM(0),MM(-20))
point3 = Point2D.Create(MM(0),MM(-40))
result = SketchRectangle.Create(point1, point2, point3)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[4].GetChildren[ICurvePoint]()[1])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[1])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[5].GetChildren[ICurvePoint]()[0])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[1])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[5].GetChildren[ICurvePoint]()[1])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[1])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[6].GetChildren[ICurvePoint]()[0])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[1])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[4].GetChildren[ICurvePoint]()[0])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[1].GetChildren[ICurvePoint]()[1])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[7].GetChildren[ICurvePoint]()[1])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[1].GetChildren[ICurvePoint]()[1])

result = Constraint.CreateCoincident(baseSel, targetSel)

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[6].GetChildren[ICurvePoint]()[1])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[1], 0.04)

result = Constraint.CreateCoincident(baseSel, targetSel)
# EndBlock

# Solidify Sketch
mode = InteractionMode.Solid
result = ViewHelper.SetViewMode(mode, None)
# EndBlock


#EMA API
import clr
apipath = "ema3d.Api.V25.dll"
clr.AddReferenceToFileAndPath(apipath)
import ema3d.Api.V25.Core as Core
import ema3d.Api.V25.Core.Domain.Domain as Domain
from ema3d.Api.V25.Core.Definitions import LineBarrier, BarrierShape

# get document
doc = Window.ActiveWindow.Document

# create domain
domain = Domain.GetInstance(doc)
Domain.ResetDomainBounds(domain)

# create line barrier with Line shape type
surfaces = GetRootPart().Bodies[0].Faces
lines = [GetRootPart().Bodies[0].Edges[4]]
line_barrier = LineBarrier.Create(
    doc,
    BarrierShape.Line,
    [],
    lines,
    surfaces

)

# Refresh Stage to show EMA Tree
Solution.Stages.SetStage("EMA3D")