yeah, I just checked some videos and I'll do it from scratch.
and this forum is great in case I need some help.
thanks for your support guys appreciated
yeah, I just checked some videos and I'll do it from scratch.
and this forum is great in case I need some help.
thanks for your support guys appreciated
I used those plugins available there
http://www.blb-bois.com/dao/plugins-sketchup
sorry it's in french .. nice looking result but I have to conclude that the mortice-tenon plugin is buggy.
I want to test the trim using the pro 30 days version but it says that my component is not a solid. Why ?? Attached my sketchup project...
oh ok got it, I thought there was some tricks to easily do it along a path such a router on a piece of wood. but its true, it's very easy by editing each components too
thanks !
hi guys, what's the easiest way to make a groove (orange line) in these inner faces of each components shown in this picture ?
here's the code to build a door with its frame around, sorry its in french .. as you can see, there's a base.pushpull(-hauteur+"1/32".to_l) .. the 1/32 is to avoid the crash ...
require 'sketchup.rb'
module PorteBuilder
class Porte
attr_accessor ;espaceBas, ;espaceHaut, ;espaceCote, ;charniereEspaceBas, ;charniereEspaceHaut, ;poigneeEspaceBas, ;hauteur, ;largeur, ;epaisseur, ;frontFace
def initialize(espaceBas, espaceHaut, espaceCote, charniereEspaceHaut, charniereEspaceBas, poigneeEspaceBas,
hauteur, largeur, epaisseur)
@espaceBas = espaceBas
@espaceHaut = espaceHaut
@espaceCote = espaceCote
@charniereEspaceHaut = charniereEspaceHaut
@charniereEspaceBas = charniereEspaceBas
@poigneeEspaceBas = poigneeEspaceBas
@hauteur = hauteur
@largeur = largeur
@epaisseur = epaisseur
end # initialize
def draw()
model = Sketchup.active_model
entities = model.entities
group = entities.add_group
entities = group.entities
# dessiner la base de la porte
basePts = []
basePts[0] = [0, 0, @espaceBas]
basePts[1] = [@largeur, 0, @espaceBas]
basePts[2] = [@largeur, @epaisseur, @espaceBas]
basePts[3] = [0, @epaisseur, @espaceBas]
base = entities.add_face basePts
@hauteur = -@hauteur if( base.normal.dot(Z_AXIS) < 0 )
# faire une porte avec la base
array_before = entities.to_a
base.pushpull(@hauteur)
array_after = entities.to_a
new_entities = array_after - array_before
# aller chercher la face qui aura la poignée
faces=[]
new_entities.each{|e|faces<<e if e.class==Sketchup;;Face}
normalizeVector = (Geom;;Vector3d.new 0,1,0).normalize!
faces.each{|face|
resultClassify = face.classify_point(basePts[0])
if (face.normal.parallel? normalizeVector and resultClassify == Sketchup;;Face;;PointOnVertex)
@frontFace = face
break
end
}
# bâtir le trou de la poignee
rayonPoignee = '1 1/4"'.to_l
posXPoignee = @largeur - '2 3/8"'.to_l - rayonPoignee
posYPoignee = 0
posZPoignee = @poigneeEspaceBas + @espaceBas
centrePoignee = Geom;;Point3d.new posXPoignee, posYPoignee, posZPoignee
# décider de la normal de la poignee
normalPoignee = (Geom;;Vector3d.new 0,1,0).normalize!
edgesPoignee = entities.add_circle centrePoignee, normalPoignee, rayonPoignee
facePognee = ( edgesPoignee.first.faces.to_a - [@frontFace] ).first
facePognee.pushpull -@epaisseur
end # draw
end # class Porte
class Moulure
largeur='3 1/2"'.to_l
epaisseur='3/4"'.to_l
end # class Moulure
class Montant
attr_accessor ;largeur, ;epaisseur
def initialize(largeur, epaisseur)
@largeur = largeur
@epaisseur = epaisseur
end # initialize
def draw(porte)
normalFrontFace = porte.frontFace.normal
nearestPoint=nil
porte.frontFace.edges.each{|edgeFrontFace|
linesPoint3d=[]
edgeFrontFace.line.each{|e|linesPoint3d<<e if e.class==Geom;;Point3d}
linesPoint3d.each{|linePoint3d|
point = [0,0,0]
if (nearestPoint == nil or ((linePoint3d.distance point) < (nearestPoint.distance point)))
nearestPoint = linePoint3d
end
}
}
startingPoint = nearestPoint.offset [-porte.espaceCote-@epaisseur, 0, +porte.hauteur+porte.espaceHaut]
drawPart(startingPoint, @epaisseur*2 + porte.largeur + porte.espaceCote*2, @largeur, @epaisseur)
startingPoint = nearestPoint.offset [-porte.espaceCote-@epaisseur, 0, -porte.espaceBas]
drawPart(startingPoint, @epaisseur, @largeur, porte.espaceBas + porte.hauteur + porte.espaceHaut)
startingPoint = nearestPoint.offset [porte.largeur+porte.espaceCote, 0, -porte.espaceBas]
drawPart(startingPoint, @epaisseur, @largeur, porte.espaceBas + porte.hauteur + porte.espaceHaut)
end # draw
def drawPart(startingPoint, offsetX, offsetY, hauteur)
begin
model = Sketchup.active_model
entities = model.entities
basePts=[]
basePts[0] = startingPoint
basePts[1] = basePts[0].offset [+offsetX, 0, 0]
basePts[2] = basePts[1].offset [0, offsetY, 0]
basePts[3] = basePts[2].offset [-offsetX, 0, 0]
base = entities.add_face basePts
if( base.normal.dot(Z_AXIS) < 0 )
base.pushpull(-hauteur+"1/32".to_l)
else
base.pushpull(hauteur)
end
rescue
puts $!, $@
end
end # drawPart
end # class Montant
end # module PorteBuilder
prombasePts = ["Hauteur?", "Largeur?", "Profondeur"]
values = ['80"'.to_l, '30"'.to_l, '1 7/8"'.to_l]
results = UI.inputbox prombasePts, values, "Dimension de votre porte ?"
return if not results # This means that the user canceld the operation
height, width, depth = results
#espaceBas, espaceHaut, espaceCote, charniereEspaceHaut, charniereEspaceBas, poigneeEspaceBas, hauteur, largeur, epaisseur)
unePorte = PorteBuilder;;Porte.new('3/4"'.to_l, '1/16"'.to_l, '1/16"'.to_l, '7"'.to_l, '11"'.to_l, '36"'.to_l, '80"'.to_l, '30"'.to_l, '1 7/8"'.to_l)
unePorte.draw()
lesMontant = PorteBuilder;;Montant.new('3 1/2"'.to_l, '3/4"'.to_l)
lesMontant.draw(unePorte)
hi guys, when I do a pushpull in my ruby script that the result ends on another surface, google 8 crashes. I dont't remember with which version I made this script (long time ago) but this was working. If I pushpull with a smaller value to avoid ending to the another surface, it works and then I'm ble to manually pushpull the remaining gap.
what's wrong ? thanks
ahh great it works with a group .. thanks !
well I did a follow me on my door to create the moulding
here's the same door view from the front and behind ..
but if you take a look on the behind view, there's no face between the moulding and the door frame .. because of the followme .. if I do a push/pull, its ok but that's not what I wanna do... I thought it was my ruby script that creates my door my its the same result if I do it manually.
thanks again
see my picture
why it doesn't do the same result as a push/pull ? why I lost a face ? thanks