Taking a model to particular coordinates
-
rich, it imports a model and instantly takes it to particular coordinates dictated by you!
-
The code as it stands adds a component-instance based on the 3ds file at the origin [0,0,0]... after all of the kerfuffle.
It then moves it by the defined x & y values, the z isn't changed at all.
IF the original object is not z=0, then it simply stays where it is in the 3ds file ???
There are ways to move all of the definitions geometry to z=0 BUT that's not the original request ?
Please check the 3ds's geometry and the SKP's for similarities if x=0 & y=0... -
@unknownuser said:
Is this a 3ds importer that doesn't need you to place the model after importing? Or what is it?
This 3ds importer [built-in] DOES require you to place it BUT my cludged work-around does work... just about
-
Can it place the 3ds file by lowest point of bounding box centre at 0,0,0? I'm not at pc to check this out?
-
@unknownuser said:
Can it place the 3ds file by lowest point of bounding box centre at 0,0,0? I'm not at pc to check this out?
Yes it could... BUT currently it simply moves it in x/y...
If I'm asked the right questions I might give the right answers... -
How can the model alwayx go to z = 0?
-
First off... do the code as before, but leave x=0 and y=0.
What is the z ?
If that's known then add the-z
inVector3d.new(x, y, -z)
It should fix it.
BUT IF it's not easily known then perhaps usez=obj.bounds.min.z
and then re-transform! the obj using a new vector of(0,0,-z)
........... -
@unknownuser said:
If I'm asked the right questions I might give the right answers
Audible sigh.....
-
@unknownuser said:
@unknownuser said:
If I'm asked the right questions I might give the right answers
Audible sigh.....
BUT we will sort this out [eventually... ] -
@tig said:
@gaieus said:
And you have all the powers to move any topic belonging there, TIG!
I know but hopefully, this is now 'dead' so moving it now seems a waste of time...Ah yes, so the topic has grown to 3 pages ever since.
Anyway, looking forward to the "doh" moment (not as if I understood any of the discussion here - maybe except for Rich's gibbering)
-
Aaah, look who's cheered up. Did you find your little unwelcome friend?
-
@gaieus said:
@tig said:
@gaieus said:
And you have all the powers to move any topic belonging there, TIG!
I know but hopefully, this is now 'dead' so moving it now seems a waste of time...Ah yes, so the topic has grown to 3 pages ever since.
Anyway, looking forward to the "doh" moment (not as if I understood any of the discussion here - maybe except for Rich's gibbering)
The announcement of the demise of the topic was a little premature [to paraphrase Mark Twain [again]]...
There's also the PMing that you don't see -
This programm is actually making me crazy. What I am doing is that Matlab gives me a list example like this in a text file.
milling
500 (x axis)
400 (y axis)
0 (rot)
drilling
600
.....etc
and then I use this text file in the program above. However it gives me an error: Failed import. strangely enough when I remove the first name and its coordinates and rotation and moves the second one in its place, it works. Do you think this is a problem about the matlab code or sketchup? -
You give us no real example but expect us to help you...
Can you attach a typical file so we can understand what you are trying to extract from the file...
IF the format is as your post suggests...milling
500 (x axis)
400 (y axis)
0 (rot)
drilling
600 THEN your code needs to find 'milling' and then after that the next two lines are X, Y & the third line 'rot' give your values '.to_f'; when you meet another 'milling' you stop and start again. If you meet another 'drilling' you stop and take a value '.to_f' from the drilling [whatever that is?] etc...
IF you give us an example of the file you are wanting to read in, and what you hope to get out of it to put into your SKP THEN we might be better placed to help you - rather than this current 'bits & bobs' approach which isn't getting anyone anywhere... -
ok sorry so let me explain better. So I did a text file containing the following:
milling
500
400
0
drilling
650
100
90
etc....
then the sketchup plugin opens this text file and read line by line. the first line is the name of a .3ds file and it is imported. 500 and 400 are the x and y coordinates where the model will be taken and 0 is the rotation of the model. then it starts again..imports the file drilling.3ds and takes it at 650, 100 and rotates it by 90 degrees.
Till then it's ok.
Now what i had to do is generate the text file using Mathlab and I managed to do that. However when I load this file (generated by matlab) in sketchup it tells me import failed. Then, if I delete the name of the first model, it's x and y coordinates and the rotation ie as belowdrilling
650
100
90
etcIt imports al the models correctly.. I don't know if the error is from matlab's side or sketchup's. I hope i explained myself wel now...
-
So...
You have data in a file that always has 4 lines for each 'thing'.
The first line is the file-name.
The second line is the X.
The third line is the Y.
The fourth line is the Rotation.
So you need to read the file in steps of four...lines=IO.readlines(filepath) i=0 ### always the first element in array 'lines' (lines.length/4).times{ f=lines[i].strip ###the '.strip' ### removes '\n'; does it need +'.3ds' ??? x=lines[i+1].strip.to_f y=lines[i+2].strip.to_f r=lines[i+3].strip.to_f ### now do what you want with file 'f', ### placing it at 'x' & 'y' with rotation 'r' etc... ### i=i+4 ### do next 4 lines etc etc... }
I suspect that you might not be doing the import successfully ???
-
and where do i write the name of hte file?
-
and also i need to save the first line in variable machine
-
this is how i did it.....
model = Sketchup.active_model a = [] counter = 0 file = File.new("trial.txt", "r") while (line = file.gets) a[counter] = line if counter % 4 == 0.0 # lines 0 , 4, 8 etc machine = "#{a[counter].strip}.3ds" elsif counter % 4 == 1.0 # lines 1 , 5, 9 etc x = a[counter].to_f elsif counter % 4 == 2.0 # lines 2 , 6, 10 etc y = a[counter].to_f elsif counter % 4 == 3.0 # lines 3 , 7, 11 etc rot = a[counter].to_i ### processing end counter = counter + 1 end
-
@borg.stef said:
and also i need to save the first line in variable machine
so... modify TIG's example, thus:
SUMMARY = true model = Sketchup.active_model dir = Dir.getwd # save current working dir path = File.expand_path("absolute path to 3ds import dir") lines = IO.readlines(filepath) i=0 ### always the first element in array 'lines' (lines.length/4).times{ machine = lines[i].strip + '.3ds' ### the '.strip' ### removes '\n'; does it need +'.3ds' ??? x=lines[i+1].strip.to_f y=lines[i+2].strip.to_f r=lines[i+3].strip.to_f ### success = model.import( File.join(path,machine), SUMMARY ) if success ### place it at 'x' & 'y' with rotation 'r' etc... else puts("Error at line #{i}, importing file; #{machine}\n") end ### i=i+4 ### do next 4 lines etc etc... } Dir.chdir = dir # reset working dir
Advertisement