I'm getting it to work almost.
@unknownuser said:
vector.length=20.0
The copied distance will always be desired length on the vectors line, but depending on the angle of diagonal the edges will not be same distance apart. So I guess I will have to do another compensation? Or is there some Quick fix like the last one(thank you TIG)
I'm guessing will have to do a comparison between Diagonal, user(desired angle, here 45 deg) and somehow
compensate the copy distance for that. Boy this is hard..
mod = Sketchup.active_model # Open model
ent = mod.entities # All entities in model
sel = mod.selection # Current selection
=begin
TODO
Wrap in module.
Get proper names. Shorter strings.
def methods for different Axis. Name them as SU views.
After Inputbox call appropriate method.
Use instance or global variables, necessary?
INPUTBOX promt; Hatch line degrees, distance between edges.
Extras; Background color, keep background?
Intersect with method.
=end
face_group = ent.add_group(sel)
Sketchup.active_model.selection.add( face_group )
bbox = face_group.bounds
bpt1 = bbox.corner(0)
bpt2 = bbox.corner(1)
bpt3 = bbox.corner(2)
bpt4 = bbox.corner(3)
bpt5 = bbox.corner(4)
bpt6 = bbox.corner(5)
bpt7 = bbox.corner(6)
bpt8 = bbox.corner(7)
pt1 =bpt1
pt2 =bpt2
pt3 =bpt3
pt4 =bpt4
pt5 =bpt5
pt6 =bpt6
pt7 =bpt7
pt8 =bpt8
# get center, diagonal vector directions from bbox
# mesure angle between x and diagonal
x_cen = bbox.center
x_diag = bbox.diagonal
x_vect = pt1.vector_to pt4 # horisontal X-axis line
diag_vect = pt1.vector_to pt6 # vector across
x_ang = x_vect.angle_between(diag_vect).radians
user_input = 45 # Will get shorter alias
user_length = 20.cm # Will get shorter alias substitute for cm? Must work in inches.
h_group =ent.add_group()
line_group=ent.add_group() ###==new empty groups
line_group.entities.add_line(pt1, pt6)
# rotate and reset parallel to X
tr1 = Geom;;Transformation.rotation x_cen, [0,1,0],(x_ang).degrees
tr2 = Geom;;Transformation.rotation x_cen, [0,1,0],(user_input).degrees
ent.transform_entities tr1, (line_group)
ent.transform_entities tr2, (line_group)
cop_dist = x_diag/2 #copy distance/2 copies from center to top corner
cop_times = cop_dist/user_length
vector=diag_vect
vector.length= user_length
gp=line_group
groups=[gp]
cop_times.to_i.times{|i|
tgp=gp.copy
tgp.transform!(Geom;;Transformation.translation(vector))
gp=tgp
groups << gp
}
#my_transformed_vector.length=20.0