Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 43 additions & 18 deletions backends/blender2.59/dbus-server.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,6 @@ def stop(self):
l.quit()
return "stopped"

@mod3D_api(reference = undefined_object, length = not_zero)
def make_box(self, reference=-1, length=1, width=1, height=1):
ops.mesh.primitive_cube_add()
context.active_object.name = reference
size = (length, width, height)
ops.transform.resize(size)
return reference

@mod3D_api(reference = defined_object, frame = positive_int)
def move_to(self, reference, x=None, y=None, z=None, frame=1, immediate=False):
o = data.objects[reference]
Expand Down Expand Up @@ -127,20 +119,51 @@ def set_material_property(self, reference, prop, value, immediate=True, frame=1)
return reference

@mod3D_api(reference = undefined_object)
def make_cone(self, reference, x=0.0, y=0.0, z=1.0, diameter=1.0, height=1.0):
ops.mesh.primitive_cone_add(radius=diameter / 2.0, depth=height)
def make_shape(self, reference, descr, length=1.0, width=1.0, height=1.0, x=0.0, y=0.0, z=1.0, extra=0.0):
if descr == "cylinder":
ops.mesh.primitive_cylinder_add()
ops.transform.resize((length, width, height))
elif descr == "cone":
ops.mesh.primitive_cone_add()
ops.transform.resize((length, width, height))
elif descr == "sphere":
ops.mesh.primitive_uv_sphere_add()
ops.transform.resize((length, width, height))
elif descr == "box":
ops.mesh.primitive_cube_add()
ops.transform.resize((length, width, height))
elif descr == "plane":
ops.mesh.primitive_cube_add()
ops.transform.resize((length, width, 0.0001))
else:
print "shape {} not implemented".format(descr)
return reference
z_axis = Vector(0,0,1)
target = Vector(x,y,z)
q = z_axis.difference(target)
ops.transform.rotate(value=q.angle, axis=q.axis)
context.active_object.name = reference
return reference

@mod3D_api(reference = undefined_object)
def make_sphere(self, reference, size):
ops.mesh.primitive_uv_sphere_add(size=size)
context.active_object.name = reference
return reference

@mod3D_api(reference = undefined_object)
def make_cylinder(self, reference, x=0.0, y=0.0, z=1.0, diameter=1.0, height=1.0):
ops.mesh.primitive_cylinder_add(radius=diameter / 2.0, depth=height)
def update_shape(self, reference, descr, length=1.0, width=1.0, height=1.0, x=0.0, y=0.0, z=1.0, extra=0.0):
if descr == "cylinder":
ops.transform.resize((length, width, height))
elif descr == "cone":
ops.transform.resize((length, width, height))
elif descr == "sphere":
ops.transform.resize((length, width, height))
elif descr == "box":
ops.transform.resize((length, width, height))
elif descr == "plane":
ops.transform.resize((length, width, 0.0001))
else:
print "shape {} not implemented".format(descr)
return reference
z_axis = Vector(0,0,1)
target = Vector(x,y,z)
q = z_axis.difference(target)
ops.transform.rotate(value=q.angle, axis=q.axis)
context.active_object.name = reference
return reference

Expand Down Expand Up @@ -183,3 +206,5 @@ def rotate(self, reference, R_1_1, R_1_2, R_1_3, R_2_1,R_2_2, R_2_3, R_3_1, R_3_
name = dbus.service.BusName("de.tuberlin.uebb.modelica3d.server", session_bus)
api = Modelica3DAPI(session_bus, "/de/tuberlin/uebb/modelica3d/server")
l.run()

# vim:ts=4:sw=4:expandtab
35 changes: 15 additions & 20 deletions backends/osg-gtk/python/dbus-server.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def defined_material(ref) :
# Check for positive value
def positive(s):
return (s <= 0.0, "expected positive value")

def positive_int(i):
return (isinstance(i,int) and i >= 0, "expected positive int")

Expand All @@ -106,26 +106,21 @@ def stop(self):
l.quit()
return "stopped"

@mod3D_api(reference = undefined_object, length = not_zero)
def make_box(self, reference, length=1, width=1, height=1, tx=0.0, ty=0.0, tz=1.0):
self.omg.proc3d_create_box(self.ctxt, c_char_p(reference),
c_double(tx), c_double(ty), c_double(tz),
c_double(width), c_double(length), c_double(height))
return reference

@mod3D_api(reference = undefined_object, height = not_zero, diameter = not_zero)
def make_cone(self, reference, x=0.0, y=0.0, z=1.0, diameter=1, height=5):
self.omg.proc3d_create_cone(self.ctxt, c_char_p(reference), c_double(x), c_double(y), c_double(z), c_double(height), c_double(diameter / 2.0));
@mod3D_api(reference = undefined_object)
def make_shape(self, reference, descr, length, width, height, x, y, z, extra, immediate=False):
if (length < 0.001 or width < 0.001 or height < 0.001): return reference
print 'making shape', descr, length, width, height, x, y, z, extra
self.omg.proc3d_create_shape(self.ctxt, c_char_p(reference), c_char_p(descr),
c_double(length), c_double(width), c_double(height),
c_double(x), c_double(y), c_double(z), c_double(extra))
return reference

@mod3D_api(reference = undefined_object, size = not_zero)
def make_sphere(self, reference, size=1):
self.omg.proc3d_create_sphere(self.ctxt, c_char_p(reference), c_double(size / 2.0));
return reference

@mod3D_api(reference = undefined_object, height = not_zero, diameter = not_zero)
def make_cylinder(self, reference, x=0.0, y=0.0, z=1.0, diameter=1, height = 10):
self.omg.proc3d_create_cylinder(self.ctxt, c_char_p(reference), c_double(x), c_double(y), c_double(z), c_double(height), c_double(diameter / 2.0))
@mod3D_api(reference = defined_object)
def update_shape(self, reference, descr, length, width, height, x, y, z, extra, t, immediate=False):
if (length < 0.001 or width < 0.001 or height < 0.001): return reference
self.omg.proc3d_update_shape(self.ctxt, c_char_p(reference), c_char_p(descr),
c_double(length), c_double(width), c_double(height),
c_double(x), c_double(y), c_double(z), c_double(extra), c_double(t))
return reference

@mod3D_api(reference = defined_object)
Expand Down Expand Up @@ -173,7 +168,7 @@ def rotate(self, reference,
R_1_1, R_1_2, R_1_3,
R_2_1, R_2_2, R_2_3,
R_3_1, R_3_2, R_3_3,
t=0.0):
t=0.0, immediate=False):
self.omg.proc3d_set_rotation_matrix(self.ctxt, c_char_p(reference),
c_double(R_1_1), c_double(R_1_2), c_double(R_1_3),
c_double(R_2_1), c_double(R_2_2), c_double(R_2_3),
Expand Down
Loading