Yes I think it is a simpler way to draw the profile and pushpull, but once I started along the path of rotation I was getting some unusual things happening and I wanted to know what was going on.
I'm on a learning curve with transformations so I will be looking into all the points highlighted here.
I want to be able to define the number of teeth on each wheel and the diameter of the wheel. There will be eight wheels in all- I am modelling the back sprocket of a bicycle wheel and would like the script to ask how many wheels on the sprocket? What are their diameters? and what is the separation between each wheel.
If I were to go along the route suggested by Dan I would have eight separate pushpulls of the axial profiles but this still would probably less error prone and much simpler.
Latest posts made by crustybaps
-
RE: Transformation.rotation multiple copy
-
RE: Transformation.rotation multiple copy
Thanks I'll take a look.
What I have so far is below which seems to have done the job. Theres still a lot of dots to fill in yet as far as connecting the teeth and forming the correct profile for the teeth, but this is a good start. Thanks for all the helpfor i in 1..n_teeth
#create the transformation object
t=Geom::Transformation.rotation [0,0,0],[0,1,0], theta
points = face.outer_loop.vertices.map! { |v| v.position.transform( t ) }
new_face = ents.add_face( points )
new_face.material='green'
new_face.pushpull 2
ents.add_face pts
theta=theta+angle.degreesend
-
RE: Transformation.rotation multiple copy
Does this mean that I put the 3d points into an array and then perform the transformation on the array?
There are no holes in the face yet I will try that excercise next but for now I will try to get the angle correct. My angle in radians is 36 degrees and I am trying to create a gear wheel with ten teeth. The code below works to a certain degree but I am getting 5 copies only instead of the nine I was expecting. Its an improvement on my previous attempts.
for i in 1..10
#create the transformation object
t=Geom::Transformation.rotation [0,0,0],[0,1,0], theta
#transform the face
ents.transform_entities t, face
#add the face back to its original position for another transformation
face=ents.add_face pts
#increase the angle of rotation by another 36 degrees
theta=theta+theta
end -
Transformation.rotation multiple copy
I am wanting to know how may I use the code in a loop to create multiple copies of face.
t=Geom::Transformation.rotation [0,0,0],[0,1,0], theta
ents.transform_entities t, face -
Assign a material in the ruby console
I have tried to add a material to some of the faces in my model and I get the error material [Brick_Antique]" not found. Could someone show me the correct way to assign a material to a face
for i in 1..10 faces[i].material= "[Brick_Antique]"
-
RE: Help needed with intersecting geometry
Thanks for the tips. Are there any tools you could recomend off hand or what terms I should search for add/subtract. I don't have pro version yet.
-
Help needed with intersecting geometry
HI This is my first post. Im writing a script which i hope will be able to create mortice and tennon geometry for woodworking enthusiasts. I've been trying to figure out how to get rid of the excess faces which are showing in the model. I was expecting the mortice slot to cut through the wood without leaving any other faces. I'm begining to realise that this is quite a complex task and probably not best suited for a beginner but if any one could pointme in the right direction I would appreciate it. Even if it's only to suggest what stuff I should study first to be able to get to the level I am wanting to be at with this project. I am including the code below
<span class="syntaxdefault">mod </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model </span><span class="syntaxcomment"># Open model<br /></span><span class="syntaxdefault">ents </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mod</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities </span><span class="syntaxcomment"># All entities in model<br /></span><span class="syntaxdefault">sel </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mod</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">selection </span><span class="syntaxcomment"># Current selectio<br /><br />#define constants<br /></span><span class="syntaxdefault">ORIGIN</span><span class="syntaxkeyword">=[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">THICKNESS</span><span class="syntaxkeyword">=(</span><span class="syntaxdefault">25.4</span><span class="syntaxkeyword">*</span><span class="syntaxdefault">1.75</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">to_i</span><span class="syntaxcomment"># 1 3/4"<br /></span><span class="syntaxdefault">BOTTOMGAP</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">51<br />REBATE</span><span class="syntaxkeyword">=(</span><span class="syntaxdefault">THICKNESS </span><span class="syntaxkeyword">/ </span><span class="syntaxdefault">3</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">to_i<br />MORTICETHICKNESS </span><span class="syntaxkeyword">= (</span><span class="syntaxdefault">THICKNESS </span><span class="syntaxkeyword">/ </span><span class="syntaxdefault">3</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">to_i <br />LEN</span><span class="syntaxkeyword">=(</span><span class="syntaxdefault">4.5</span><span class="syntaxkeyword">*</span><span class="syntaxdefault">25.4</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">to_i </span><span class="syntaxcomment">#4 1/2"<br /></span><span class="syntaxdefault">HEIGHT</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">188 </span><span class="syntaxcomment">#6ft<br /></span><span class="syntaxdefault">SPACER</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">20<br /><br /></span><span class="syntaxcomment">#define the main face corners<br /></span><span class="syntaxdefault">pts</span><span class="syntaxkeyword">=[]<br /></span><span class="syntaxdefault">pts</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">THICKNESS</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">THICKNESS</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxcomment">#draw the face<br /></span><span class="syntaxdefault">bottomFace</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">pts<br />bottom</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">ents</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face pts<br /></span><span class="syntaxcomment">#extrude to Length<br /></span><span class="syntaxdefault">bottom</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">reverse</span><span class="syntaxkeyword">!().</span><span class="syntaxdefault">pushpull HEIGHT<br /><br /></span><span class="syntaxcomment">#create the rebate<br /></span><span class="syntaxdefault">pts1</span><span class="syntaxkeyword">=[]<br /></span><span class="syntaxdefault">pts1</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]=</span><span class="syntaxdefault">ORIGIN<br />pts1</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">SPACER</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts1</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">SPACER</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">SPACER</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts1</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">SPACER</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">rebateFace</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">ents</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face pts1<br />rebateFace</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">reverse</span><span class="syntaxkeyword">!().</span><span class="syntaxdefault">pushpull HEIGHT<br /><br /></span><span class="syntaxcomment">#define the bottom mortice slot corners<br /></span><span class="syntaxdefault">pts2</span><span class="syntaxkeyword">=[]<br /></span><span class="syntaxdefault">pts2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">MORTICETHICKNESS</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">BOTTOMGAP</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">*</span><span class="syntaxdefault">MORTICETHICKNESS</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">BOTTOMGAP</span><span class="syntaxkeyword">] <br /></span><span class="syntaxdefault">pts2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">*</span><span class="syntaxdefault">MORTICETHICKNESS</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">BOTTOMGAP </span><span class="syntaxkeyword">+ </span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">MORTICETHICKNESS</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">BOTTOMGAP </span><span class="syntaxkeyword">+ </span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">]<br /></span><span class="syntaxcomment">#extrude the bottom mortice slot<br />#i would like this slot to cut through and subtract from the existing geometry<br /></span><span class="syntaxdefault">firstMorticeFace</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">pts2<br />firstMortice</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">ents</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face pts2<br />firstMortice</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">reverse</span><span class="syntaxkeyword">!().</span><span class="syntaxdefault">pushpull LEN</span>