Hi my name is Jim and Iāve come to the Ruby Sketchup forum before and have been helped so much.
As Iāve said before Iām new to Ruby and only get to work on my project in the winter so Iām back.
Iāve tried the Quantum wave function method were you pound your head on the keyboard until the right combination of keys are intersected. But that hasnāt worked. So much for the wave function!
Iāve printed out and read as much of the Ruby Sketchup API as I can find that applies to 3d text and how to get it to the face of an object but have not progressed very much.
Iāve created a program to generate a geodesic and am at the point that I need to identify each triangle with a number on its face as well as two numbers at each vertices. After failing to place 3d text on the face of the triangle I went ahead and use 2d text at the vertices but that does not do what I really need.
I need a 3d text on the surface that I can push pull and have some depth with. As I want to 3d print the formās for a triangular block for a pizza oven build and each block needs to have its ID embossed into it. Among other things that I want to do with this.
The way I have approached this is that each triangle is created one at a time in a loop. So that each time the triangle needs to gets the appropriate text placed on its face before going out of the loop and coming back and creating the next triangle.
I am creating a bounding box with my text inside a bounding box and some were near the center but two major problems appear.
-
The feedback on the center and corner numbers on the bounding box are not any wear close to wear they should be and
-
Iāve tried everything I can think of to turn my text variable āmā, the triangle count number into a variable and Ruby wonāt allow it.
Iāll place the code I think you will need so you can see what I am doing and hopefully you can find the errors of my way.
Itās either that or Iām back to the wave function.
Thanks again.
Jim.
Here is the code.
polygon_index = pm.add_polygon([pts_xyz_at_n[0] , pts_xyz_at_n[1] , pts_xyz_at_n[2]] )
#puts" make triangle #{m}"
try = []
try[0] = pts_xyz_at_n[0]
try[1] = pts_xyz_at_n[1]
try[2] = pts_xyz_at_n[2]
entities = mod.active_entities
group = Sketchup.active_model.entities.add_group #Add the group to the entities in the model
entities = group.entities # Get the entities within the group
face = entities.add_face try # Add a face to within the group
edges = face.edges
status = face.reverse!
normal = face.normal
puts" The normal of triangle face # #{m} is ? #{normal}"
area = face.area
puts "The area of triangle # #{m} is #{area}"
Sketchup.active_model.entities
model = Sketchup.active_model
entities = mod.active_entities
################# adds 3d text on at 0,0,0 ######################
group = ent.add_group # Add the group to the entities in the model
entities = group.entities # Get the entities within the group
boundingbox = model.bounds
model_bb = model.bounds
############## adding 3d text to model ###################
success = entities.add_3d_text( "m", TextAlignLeft, "Arial", is_Bold = 0.0 , is_italic = 0.0,letter_height = 0.025, tolerance = 0.0, z = 0.0, is_filled = true, extrusion = 0.0)
puts " success = #{success}"
first_entity = model.entities[0]
first_entity_bb = first_entity.bounds
fs_b = first_entity_bb
puts"first_entity = #{fs_b}"
boundingbox.empty?
ptb_1 = boundingbox.center
puts" boundingbox center = #{ptb_1}"
corner_ = boundingbox.corner(0)
puts" boundingbox corner(0) = #{corner_}"
group.to_component
m = m + 1 #### incrementing m
Here is the output.
Points and side length for triangle # 9
Point, # 1 is [3, 3] and has the co ordinance of [0.13238464691208032, 0.2812274564551052, 0.9504658978615464]
Point, # 2 is [4, 2] and has the co ordinance of [6.005807236859207e-17, 0.19473874066922284, 0.9808551487771093]
The length of side 1 of triangle # 9 is between point [3, 3], and point [4, 2], for a length of 0.16102639307745903
Point, # 2 is [4, 2] and has the co ordinance of [6.005807236859207e-17, 0.19473874066922284, 0.9808551487771093]
Point, # 3 is [4, 4] and has the co ordinance of [5.719967031754901e-17, 0.3568220897730899, 0.9341723589627158]
The length of side 2 of triangle # 9 is between point [4, 2], and point [4, 4], for a length of 0.16867215218162387
Point, # 3 is [4, 4] and has the co ordinance of [5.719967031754901e-17, 0.3568220897730899, 0.9341723589627158]
Point, # 1 is [3, 3] and has the co ordinance of [0.13238464691208032, 0.2812274564551052, 0.9504658978615464]
The length of side 3 of triangle # 9 is between point [4, 4], and point [3, 3], for a length of 0.1533157615327414
333 The normal of triangle face # 9 is ? (0.039739, 0.276548, 0.960178)
The area of triangle # 9 is 0.01117362776006554
The bounding box output stuff.
success = true
first_entity = #Geom::BoundingBox:0x00000248a3959ac8
boundingbox center = (0", 0", 0.079675")
boundingbox corner(0) (-0.850651", -0.850651", -0.850651")
number of triangles = 10
Frequency = 8
Radius = 1.0
I think I can get the text to the face if I can just get the bounding box right and its cooridnates.