def process(self): if not any(socket.is_linked for socket in self.outputs): return curve_s = self.inputs['Curve'].sv_get() offset_s = self.inputs['Offset'].sv_get() offset_curve_s = self.inputs['OffsetCurve'].sv_get(default=[[None]]) vector_s = self.inputs['Vector'].sv_get() resolution_s = self.inputs['Resolution'].sv_get() curve_s = ensure_nesting_level(curve_s, 2, data_types=(SvCurve, )) offset_s = ensure_nesting_level(offset_s, 2) vector_s = ensure_nesting_level(vector_s, 3) resolution_s = ensure_nesting_level(resolution_s, 2) if self.inputs['OffsetCurve'].is_linked: offset_curve_s = ensure_nesting_level(offset_curve_s, 2, data_types=(SvCurve, )) curve_out = [] for curves, offsets, offset_curves, vectors, resolutions in zip_long_repeat( curve_s, offset_s, offset_curve_s, vector_s, resolution_s): new_curves = [] for curve, offset, offset_curve, vector, resolution in zip_long_repeat( curves, offsets, offset_curves, vectors, resolutions): if self.algorithm != NORMAL_DIR: if self.mode == 'X': vector = [offset, 0, 0] elif self.mode == 'Y': vector = [0, offset, 0] if vector is not None: vector = np.array(vector) if self.offset_type == 'CONST': new_curve = SvOffsetCurve(curve, offset_vector=vector, offset_amount=offset, algorithm=self.algorithm, resolution=resolution) else: if offset_curve is None: raise SvNoDataError(socket=self.inputs['OffsetCurve'], node=self) new_curve = SvOffsetCurve(curve, offset_vector=vector, offset_curve=offset_curve, algorithm=self.algorithm, resolution=resolution) new_curves.append(new_curve) curve_out.append(new_curves) self.outputs['Curve'].sv_set(curve_out)
def process(self): if not any(socket.is_linked for socket in self.outputs): return curve_s = self.inputs['Curve'].sv_get() offset_s = self.inputs['Offset'].sv_get() vector_s = self.inputs['Vector'].sv_get() resolution_s = self.inputs['Resolution'].sv_get() curve_s = ensure_nesting_level(curve_s, 2, data_types=(SvCurve,)) offset_s = ensure_nesting_level(offset_s, 2) vector_s = ensure_nesting_level(vector_s, 3) resolution_s = ensure_nesting_level(resolution_s, 2) curve_out = [] for curves, offsets, vectors, resolutions in zip_long_repeat(curve_s, offset_s, vector_s, resolution_s): new_curves = [] for curve, offset, vector, resolution in zip_long_repeat(curves, offsets, vectors, resolutions): if self.mode == 'X': vector = [offset, 0, 0] elif self.mode == 'Y': vector = [0, offset, 0] vector = np.array(vector) new_curve = SvOffsetCurve(curve, vector, algorithm=self.algorithm, resolution=resolution) new_curves.append(new_curve) curve_out.append(new_curves) self.outputs['Curve'].sv_set(curve_out)