how to model a bent wire with a fixed length?
-
Hello,
I need to model some different bent wires in different shapes, with a fixed length. I define some points first and connect them using lines in sketch and then thicken wire in modify in the ribbon. But at the points location, wires are not smooth and an angle is made. I'm wondering is there any other option to make an smooth bent wire?
Thanks
-
Hey, you would most likely want to use the "spline" option rather than the actual "line". These are smooth and usually, result in smooth wires. If you by any chance want to a piece of python code to generate random wires let me know :), they won't all be perfectly the same length though.
-
Thanks.
But the problem is that using spline, I can not make a wire with a straight part and another bent part. I mean when I connect different points, the straight part gets bent as well and it's length gets changed. How this problem could be fixed? And how the length of a spline could be measured?
Thanks.
-
Okay, maybe you could try to make the straight part of the wire with the line option and then bent part with a spline. Probably feels a bit suboptimal but I think that is the way to go. You can group the 2 entities (parts of the wire) in a single group afterwards.
As for obtaining the length of a spline, you can use the python scripts posted at : https://forum.zmt.swiss/topic/55/how-to-compute-the-length-of-a-spline-using-the-python-api/2 .
Hopefully this helps! -
Maybe you can make one object from both wires, however, if you just place the next to each other and give both identical conductivity and permittivity the simulations should treat it as a connected structure:)
-
Hey,
sure the code is below. Can I ask for what purpose you are modelling random wires?
Cheers,# get spline function to create random wires import XCore import os import XCoreModeling import s4l_v1 as s4l import s4l_v1.model as model import numpy as np Vec3 = s4l.Vec3 def get_spline_length(spline): wire = XCoreModeling.GetWires(spline)[0] return wire.GetLength() def Thicken_Wire(spline,radius,flagDelete): wire = XCoreModeling.GetWires(spline)[0] target_curve = wire.GetGeometry(transform_to_model_space=True) # compute the length of the spline height = get_spline_length(spline) print(height) # get the Vec3 of the starting and end points startVec = target_curve.Eval(0.0) endVec = target_curve.Eval(height) # create a cylinder that will be bend to the spline, its height must be the same as the length of the spline Wire1 = XCoreModeling.CreateSolidCylinder(startVec,Vec3(startVec[0]-height,startVec[1],startVec[2]),radius) # do the bending XCoreModeling.BendBodyToCurve(Wire1,startVec,Vec3(startVec[0]-height,startVec[1],startVec[2]),Vec3(0,0,1),target_curve) # remove the used spline if flagDelete: spline.Delete() return Wire1 def CreateRandomWire(radiusWire,radiusIns,randomness,flagDeleteSplines): # randomize the x-coordinate xCor = np.random.rand(10,1)*randomness - randomness/2 # uncomment if you want to randomize y too yCor = np.random.rand(10,1)*randomness - randomness/2 # set the same starting point for all the wires points = [Vec3(0.0,0.0,0.0)] for j in range(10): # for random x coordinate #points.append(Vec3(xCor[j][0],0.0,20.0*(j+1))) # uncomment for random x and y coordinate points.append(Vec3(xCor[j][0],yCor[j][0],20.0*(j+1))) # create the random spline a = model.CreateSpline(points) # if you want the wire to be insulated set the radius of the Ins higher then 0 # this creates the wires if radiusIns > 0.0: Ins = Thicken_Wire(a,radiusIns,False) Wire = Thicken_Wire(a,radiusWire,flagDeleteSplines) return Wire,Ins else: Wire = Thicken_Wire(a,radiusWire,flagDeleteSplines) return Wire # Start of main script, change parameters as you like here NumberofWires = 10 #create the separate simulations for i in range(NumberofWires): # start by making the random wire with insulation [RandomWire,RandomIns] = CreateRandomWire(1.25,2.0,15.0,True) RandomWire.Name = 'RandomWire' + str(i+1) RandomIns.Name = 'RandomIns' + str(i+1) #possible to make a simulation in the same loop.
-
Thanks for the code.
Actually I need to model some wires with the fixed length, with one part in the brain in different spots and the remaining out of the brain, It takes a long time to model each one and I'm looking for a way to make them in a shorter time.
Thanks.
-