Friday, July 6, 2012

QuickSketchup Ruby : ความเข้าใจพื้นฐานเกี่ยวกับวัตถุของ Sketchup

โดย ประยุทธ พันธุลาภ


วัตถุพื้นฐานในการสร้างโมเดลของ Sketchup คือ

Edge และ Face

  • Face เกิดจาก Edge อย่างน้อย 3 เส้น ปิดวงรอบได้สมบูรณ์

  • ถ้ามี Edge มากกว่า 3 เส้น แต่ปิดวงรอบได้ไม่สมบูรณ์ Sketchup จะไม่สร้าง Face


    ในกรณีนี้ ให้ขีดเส้นแบ่งเป็นสามเหลี่ยม หลายๆรูปแทน เช่น

    การสร้างรถยนต์


    ดาวน์โหลดไฟล์ตัวอย่าง


    ไฟล์ตัวอย่าง skp

    เปิดไฟล์ตัวอย่าง


    ลากเส้นที่ขอบของรูป A หนึ่งเส้น จะเห็นผิวถูกสร้างขึ้นมา

    ลากเส้นที่ขอบของรูป B หนึ่งเส้น จะไม่เห็นผิวถูกสร้างขึ้นมา เพราะเส้นทั้งหมดไม่ได้อยู่ในระนาบเดียวกัน

    ต้องใช้การขีดเส้นแบ่งเป็นสามเหลี่ยม หลายๆรูปแทน



  • ไม่มีวงกลมใน Skecthup มีแต่รูป polygon เท่านั้น








  • คำสั่งวงกลมก็คือรูป 24 เหลี่ยม ตามค่า default ของ Skecthup แต่เราสามารถซ่อน Edge ได้ เพื่อให้ดูเสมือนว่า ผิวนั้นเรียบ

    รูปด้านล่างสร้างด้วยคำสั่ง polygon 24 เหลี่ยม ทั้ง 2 รูป


    เราสามารถ Soften Edge เพื่อให้ ดูเสมือนว่า ผิวนั้นเรียบ


  • Face มีวัสดุได้ 2 ด้าน คือ ด้านหน้า กับ ด้านหลัง


  • การติดกันของเส้น และผิว


  • Autofold


  • Copy เส้น และผิว ได้ง่ายกว่า Move

Sunday, July 1, 2012

QuickSketchup Ruby : การส่ง BOQ ของ Components ไปยัง Excel ด้วยไฟล์ CSV

โดย ประยุทธ พันธุลาภ

บทความก่อนหน้าการส่ง BOQ ไปยัง Excel ด้วยไฟล์ CSV

version ใหม่ ในเมนู Plugins ไม่ต้องพิมพ์


ดาวน์โหลดไฟล์ตัวอย่าง

1.ไฟล์ Sketchup
ไฟล์ house1.skp
Save ไว้ในโฟลเดอร์ C:\myruby

2.ไฟล์ Ruby
compoboqcsv.rbs
Save ไว้ในโฟลเดอร์ C:\myruby

ทดสอบกับโปรแกรม Sketchup

1.เปิดไฟล์ house1.skp ที่ดาวน์โหลดมาจากด้านบน

2.เลือก Components ที่ต้องการถอดปริมาณวัสดุ

คลิกที่รูปเพื่อขยาย

3.เปิด Ruby Console พิมพ์ หรือ copy + paste

Sketchup::load 'c:\\myruby\\compoboqcsv.rbs'


แล้วกดปุ่ม Enter บนคีย์บอร์ด

ดูผลลัพธ์ใน Ruby Console





4.เปิดไฟล์ c:\myruby\qs_boq.csv ด้วยโปรแกรม Spread sheet



Keyword:ภาษา Ruby Sketchup BOQ plugin, อบรม Sketchup

Sunday, June 10, 2012

Sketchup API Constants

โดย ประยุทธ พันธุลาภ


ที่ Ruby Console พิมพ์
Object.constants.sort.join("\n")

แล้วกดปุ่ม Enter บนคีย์บอร์ด

ดูผลลัพธ์ใน Ruby Console

*************************
Sketchup API Constants
*************************
ACPToolsObserver
ALT_MODIFIER_KEY
ALT_MODIFIER_MASK
ALeaderModel
ALeaderNone
ALeaderView
ARGF
ARGV
AddDetailTool
Align
ArgumentError
Array
Balustrade
Bignum
Binding
CMD_ARC
CMD_CAMERA_UNDO
CMD_CIRCLE
CMD_COPY
CMD_CUT
CMD_DELETE
CMD_DIMENSION
CMD_DISPLAY_FOV
CMD_DOLLY
CMD_DRAWCUTS
CMD_DRAWOUTLINES
CMD_ERASE
CMD_EXTRUDE
CMD_FREEHAND
CMD_HIDDENLINE
CMD_LINE
CMD_MAKE_COMPONENT
CMD_MEASURE
CMD_MOVE
CMD_NEW
CMD_OFFSET
CMD_OPEN
CMD_ORBIT
CMD_PAGE_DELETE
CMD_PAGE_NEW
CMD_PAGE_NEXT
CMD_PAGE_PREVIOUS
CMD_PAGE_UPDATE
CMD_PAINT
CMD_PAN
CMD_PASTE
CMD_POLYGON
CMD_POSITION_CAMERA
CMD_PRINT
CMD_PROTRACTOR
CMD_PUSHPULL
CMD_RECTANGLE
CMD_REDO
CMD_ROTATE
CMD_RUBY_CONSOLE
CMD_SAVE
CMD_SCALE
CMD_SECTION
CMD_SELECT
CMD_SELECTION_ZOOM_EXT
CMD_SHADED
CMD_SHOWGUIDES
CMD_SHOWHIDDEN
CMD_SKETCHAXES
CMD_SKETCHCS
CMD_TEXT
CMD_TEXTURED
CMD_TRANSPARENT
CMD_UNDO
CMD_VIEW_BACK
CMD_VIEW_BOTTOM
CMD_VIEW_FRONT
CMD_VIEW_ISO
CMD_VIEW_LEFT
CMD_VIEW_PERSPECTIVE
CMD_VIEW_RIGHT
CMD_VIEW_TOP
CMD_WALK
CMD_WIREFRAME
CMD_ZOOM
CMD_ZOOM_EXTENTS
CMD_ZOOM_WINDOW
CONSTRAIN_MODIFIER_KEY
CONSTRAIN_MODIFIER_MASK
COPY_MODIFIER_KEY
COPY_MODIFIER_MASK
ChamferStructures
Class
Clf_Normal_lines_Height
Clf_Vertical_lines_elev
Clf_Vertical_lines_height
Clf_select_outer_edges
Comparable
Continuation
Contours
CylTool
DCConverter
DCDownloader
DCFunctionsV1
DCInteractTool
DCObservers
DCProgressBar
Data
DefaultManager
DimAngleTool
DimensionArrowClosed
DimensionArrowDot
DimensionArrowNone
DimensionArrowOpen
DimensionArrowSlash
Dir
DrapeEdges
DrapeTool
Drop
DynamicComponentsV1
ENV
EOFError
EntitiesObserver
Enumerable
Errno
Exception
ExtendStructures
ExtendStructures2
FALSE
FILE_WRITE_FAILED_INVALID_TYPE
FILE_WRITE_FAILED_UNKNOWN
FILE_WRITE_OK
FalseClass
File
FileTest
FilletTool2D
Fixnum
FlipEdgeTool
Float
FloatDomainError
FootprintFinder
FrameChangeObserver
FromContoursTool
FromScratchTool
GC
GL_LINES
GL_LINE_LOOP
GL_LINE_STRIP
GL_POINTS
GL_POLYGON
GL_QUADS
GL_QUAD_STRIP
GL_TRIANGLES
GL_TRIANGLE_FAN
GL_TRIANGLE_STRIP
Geom
GrowStructureFace
GrowStructures
Hash
IDABORT
IDCANCEL
IDENTITY
IDIGNORE
IDNO
IDOK
IDRETRY
IDYES
IO
IOError
IndexError
Inputbox
Integer
Interrupt
JF
KaraokeSong
Kernel
LAYER_HIDDEN_BY_DEFAULT
LAYER_IS_HIDDEN_ON_NEW_PAGES
LAYER_IS_VISIBLE_ON_NEW_PAGES
LAYER_USES_DEFAULT_VISIBILITY_ON_NEW_PAGES
LAYER_VISIBLE_BY_DEFAULT
LanguageHandler
Layer_Manager_Extension
Length
LineTool
LoadError
LocalJumpError
MB_ABORTRETRYIGNORE
MB_MULTILINE
MB_OK
MB_OKCANCEL
MB_RETRYCANCEL
MB_YESNO
MB_YESNOCANCEL
MF_CHECKED
MF_DISABLED
MF_ENABLED
MF_GRAYED
MF_UNCHECKED
MK_ALT
MK_COMMAND
MK_CONTROL
MK_LBUTTON
MK_MBUTTON
MK_RBUTTON
MK_SHIFT
Marshal
MatchData
MatchingData
Math
Mbox
Method
MirrorTool
Module
MyAppObserver
MyLayersObserver
NIL
NameError
NilClass
NoMemoryError
NoMethodError
NotImplementedError
Numeric
ORIGIN
Object
ObjectSpace
PAGE_NO_CAMERA
PAGE_USE_ALL
PAGE_USE_CAMERA
PAGE_USE_HIDDEN
PAGE_USE_LAYER_VISIBILITY
PAGE_USE_RENDERING_OPTIONS
PAGE_USE_SECTION_PLANES
PAGE_USE_SHADOWINFO
PAGE_USE_SKETCHCS
PLATFORM
ParkingTool
PathCopy
PathCopySpacing
Precision
Proc
Process
RELEASE_DATE
RUBY_PLATFORM
RUBY_RELEASE_DATE
RUBY_VERSION
Range
RangeError
Regexp
RegexpError
Roof
RoofGable
RoofPyramid
RoofTool2
RuntimeError
SB_PROMPT
SB_VCB_LABEL
SB_VCB_VALUE
SKETCHUP_CONSOLE
SKSocket
STDERR
STDIN
STDOUT
SU2KT
SU2KTAnim
SU2KTL
ScriptError
SecurityError
Selection
Set
Signal
SignalException
Singleton
Sketchup
SketchupExtension
SmooveTool
SnapTo_Arbitrary
SnapTo_Horizontal
SnapTo_Sloped
SnapTo_Vertical
Song
SongList
StampTool
StandardError
String
Struct
Symbol
SyntaxError
SystemCallError
SystemExit
SystemStackError
TAKTASK
TB_HIDDEN
TB_NEVER_SHOWN
TB_VISIBLE
TOPLEVEL_BINDING
TRUE
TST_common
Terrain
Test
TextAlignCenter
TextAlignLeft
TextAlignRight
Thread
ThreadError
ThreadGroup
Time
TrackMouseTool
TrueClass
TypeError
UI
UnboundMethod
VERSION
VK_ALT
VK_COMMAND
VK_CONTROL
VK_DELETE
VK_DOWN
VK_END
VK_HOME
VK_INSERT
VK_LEFT
VK_MENU
VK_NEXT
VK_PRIOR
VK_RIGHT
VK_SHIFT
VK_SPACE
VK_UP
ViewSpinner
WIN32OLE
WIN32OLERuntimeError
WIN32OLE_EVENT
WIN32OLE_METHOD
WIN32OLE_PARAM
WIN32OLE_TYPE
WIN32OLE_VARIABLE
WallTool
WebTextures
Win32
Win32API
X_AXIS
Y_AXIS
Z_AXIS
ZeroDivisionError


Keyword:ภาษา Ruby Sketchup plugin

QuickSketchup Ruby : การส่ง Face BOQ ไปยัง Excel ด้วยไฟล์ CSV

โดย ประยุทธ พันธุลาภ

บทความก่อนหน้า การหา BOQ จากผิวและชื่อวัสดุ

version ใหม่ ในเมนู Plugins ไม่ต้องพิมพ์


แก้ปัญหานับผิวกระจก Translucent ซ้ำสองครั้ง

*****Material ที่เป็นกระจก ต้องขึ้นต้นด้วย Translucent*****
*****โปรแกรมจะนับเฉพาะพื้นที่ด้านหน้า ******"

ดาวน์โหลดไฟล์ตัวอย่าง

1.ไฟล์ Sketchup
ไฟล์ house1.skp
Save ไว้ในโฟลเดอร์ C:\myruby

2.ไฟล์ Ruby
faceboqcsv.rbs
Save ไว้ในโฟลเดอร์ C:\myruby






ทดสอบกับโปรแกรม Sketchup

1.เปิดไฟล์ house1.skp ที่ดาวน์โหลดมาจากด้านบน

2.เลือกผิว (Face) ที่ต้องการถอดปริมาณวัสดุ

คลิกที่รูปเพื่อขยาย


3.เปิด Ruby Console พิมพ์ หรือ copy + paste คำสั่งด้านล่าง


Sketchup::load 'c:\\myruby\\faceboqcsv.rbs'


แล้วกดปุ่ม Enter บนคีย์บอร์ด

ดูผลลัพธ์ใน Ruby Console


คลิกที่รูปเพื่อขยาย

4.เปิดไฟล์ c:\myruby\qs_boq.csv ด้วยโปรแกรม Excel

คลิกที่รูปเพื่อขยาย




สรุป




ความรู้พื้นฐานเกี่ยวกับภาษา Ruby

ความรู้พื้นฐานเกี่ยวกับภาษา Sketchup Ruby API


Keyword:ภาษา Ruby Sketchup plugin, อบรม Sketchup

QuickSketchup Ruby : การหาพื้นที่หลายผิวมารวมกัน

โดย ประยุทธ พันธุลาภ

บทความก่อนหน้า การหาชื่อวัสดุของผิวที่เลือก

ดาวน์โหลดไฟล์ตัวอย่าง

1.ไฟล์ Sketchup
ไฟล์ house1.skp
Save ไว้ในโฟลเดอร์ C:\myruby

2.ไฟล์ Ruby
ไฟล์ area3.rb
Save ไว้ในโฟลเดอร์ C:\myruby


โปรแกรมเริ่มใต้เส้น #ตัวอักษรสีเขียว คือ คอมเมนท์

require 'sketchup'
#กำหนดตัวแปร entities เป็นวัตถุที่เลือกจาก selection
entities = Sketchup.active_model.selection
#กำหนดตัวแปร sumarea เป็นค่า 0
sumarea = 0

#กำหนดตัวแปร sfactor เป็นค่าแปลงหน่วยของพื้นที่จากตารางนิ้วเป็นตารางเมตร
sfactor = (1.m * 1.m)

#เริ่มต้นวน loop
entities.each{|face|
#ถ้าตัวแปร face ไม่ใช้ Sketchup::Face ข้ามไปวัตถุชิ้นถัดไป
next unless (face.class == Sketchup::Face) #ถ้าตัวแปร face เป็น Sketchup::Face ทำบรรทัดข้างล่าง
#ถ้าตัวแปร face เป็น Sketchup::Face
sumarea += (face.area / sfactor)

} #สิ้นสุดการวน loop

#แสดงผลของตัวแปร sumarea
puts "*****Total Area (sq.m.)*****"
#พิมพ์ค่าทศนิยม 2 ตำแหน่งของตัวแปร sumarea
puts (sumarea*100).round / 100.0



ทดสอบกับโปรแกรม Sketchup


1.เปิดไฟล์ house1.skp ที่ดาวน์โหลดมาจากด้านบน

2.เลือกผิว (Face) ที่ต้องการรวมพื้นที่

คลิกที่รูปเพื่อขยาย


3.เปิด Ruby Console พิมพ์

load 'c:\\myruby\\area3.rb'

แล้วกดปุ่ม Enter บนคีย์บอร์ด

ดูผลลัพธ์ใน Ruby Console

คลิกที่รูปเพื่อขยาย



สรุป



ต่อไป
การหา BOQ จากผิวและชื่อวัสดุ


Keyword:ภาษา Ruby Sketchup plugin

Saturday, June 9, 2012

QuickSketchup Ruby : การหา BOQ จากผิวและชื่อวัสดุ

โดย ประยุทธ พันธุลาภ

บทความก่อนหน้า การหาพื้นที่หลายผิวมารวมกัน


ดาวน์โหลดไฟล์ตัวอย่าง

1.ไฟล์ Sketchup
ไฟล์ house1.skp
Save ไว้ในโฟลเดอร์ C:\myruby

2.ไฟล์ Ruby
ไฟล์ faceboq.rb

Save ไว้ในโฟลเดอร์ C:\myruby


โปรแกรมเริ่มใต้เส้น #ตัวอักษรสีเขียว คือ คอมเมนท์

require 'sketchup'

#กำหนดตัวแปร entities เป็นวัตถุที่เลือกจาก selection
entities = Sketchup.active_model.selection
#กำหนดตัวแปร sumarea เป็นค่า Hash
#ดูเพิ่มเติมเกี่ยวกับ Ruby Hash ที่ http://ruby.about.com/od/rubyfeatures/a/hashes.htm
sumarea = Hash.new(0)
#กำหนดตัวแปร sfactor เป็นค่าแปลงหน่วยของพื้นที่จากตารางนิ้วเป็นตารางเมตร
sfactor = (1.m * 1.m)

#เริ่มต้นวน loop
entities.each{ |face|
#ถ้าตัวแปร face ไม่ใช่ Sketchup::Face ข้ามไปวัตถุชิ้นถัดไป
next unless (face.class == Sketchup::Face) #ถ้าตัวแปร face เป็น Sketchup::Face ทำบรรทัดข้างล่าง
#ถ้าตัวแปร face เป็น Sketchup::Face และมี Material เทอยู่ด้านหน้า
if face.material
#บวกค่าพื้นที่เพิ่ม สำหรับชื่อวัสดุด้านหน้า
sumarea[face.material.display_name] += (face.area / sfactor)
end
#ถ้าตัวแปร face เป็น Sketchup::Face และมี Material เทอยู่ด้านหลัง
if face.back_material
#บวกค่าพื้นที่เพิ่ม สำหรับชื่อวัสดุด้านหลัง
sumarea[face.back_material.display_name] += (face.area / sfactor)
end
} #สิ้นสุดการวน loop

#แสดงผลของตัวแปร sumarea
puts "*****BOQ Start*****"

#เริ่มต้นวน loop
#กำหนดตัวแปร name คือชื่อ display_name ของ material
#ส่วนตัวแปร area เป็นค่าพื้นที่ของ face มีหน่วยเป็นตารางเมตร
sumarea.each do|name,area|
#กำหนดตัวแปร marea มีค่าเป็นพื้นที่ให้มีค่าทศนิยม 2 ตำแหน่งจากค่าของตัวแปร area
marea = (area*100).round / 100.0
puts "#{name}, #{marea}, sq.m."
end #สิ้นสุดการวน loop

puts "*****BOQ End*****"





ทดสอบกับโปรแกรม Sketchup

1.เปิดไฟล์ house1.skp ที่ดาวน์โหลดมาจากด้านบน

2.เลือกผิว (Face) ที่ต้องการถอดปริมาณวัสดุ

คลิกที่รูปเพื่อขยาย


3.เปิด Ruby Console พิมพ์

load 'c:\\myruby\\faceboq.rb'

แล้วกดปุ่ม Enter บนคีย์บอร์ด

ดูผลลัพธ์ใน Ruby Console


คลิกที่รูปเพื่อขยาย




สรุป



ต่อไป
การส่ง BOQ ไปยัง Excel ด้วยไฟล์ CSV


Keyword:ภาษา Ruby Sketchup plugin, อบรม Sketchup

Friday, June 8, 2012

สารบัญ Quick Sketchup สำหรับถอด BOQ ผิวอาคาร 3 มิติ


โดย ประยุทธ พันธุลาภ




Sketchup 2016 มาแล้วจ้า


หัวข้อที่น่าสนใจ


Plugins that work

แนะนำ Plugin ที่นำมาช่วยในการทำงานได้
Read More...

Ruby Programming

แนะนำ พื้นฐานการเขียน Plugin ด้วย Ruby Script

NanoCAD

แนะนำ CAD 2D ที่สามารถมำมาใช้งานร่วมกับ Sketchup ได้ ที่สำคัญเป็น Free Software ที่เทียบเท่า AutoCAD

Libre Office

แนะนำ Office Suite ที่สามารถมำมาใช้งานร่วมกับ Sketchup ได้ ที่สำคัญเป็น Free Software ที่เทียบเท่า MS-Office


Sketchup 2015 มาแล้วจ้า



Link to download...

มีอะไรใหม่ที่น่าสนใจ

  • SketchUp 64 bit แล้ว รอกันมานาน
  • 3 Point Arc Tool
  • Rotated Rectangle สี่เหลี่ยมหมุนระนาบได้
  • IFC import/export ทำงานร่วมกับ BIM ได้


พื้นฐานการ เรนเดอร์ Sketchup ด้วย Kerkythea


Read more...

ถอด BOQ จากวัสดุ คอมโพเน้นท์ และ กรุปที่ตั้งชื่อของ Sketchup


โปรแกรม Ruby สำหรับถอดปริมาณ BOQ จากวัสดุ คอมโพเน้นท์ และ กรุปที่ตั้งชื่อของ Sketchup ในครั้งเดียว
Read more...

3D Printing ด้วย Sketchup 2014

Sketchup 2014 นำมาใช้ในงาน 3D Printing ได้เป็นอย่างดี Read more...

Sketchup 2014 มาแล้ว

Sketchup 2014 ออกมาแล้ว มีการปรับปรุงครั้งใหญ่ เช่น รองรับ BIM ตามมาตรฐาน IFC , ใช้ Ruby 2.0 และอื่นๆอีกมากพอสมควร Read more...

NanoCAD 5.0 มาแล้ว

ในที่สุดเราสามารถพัฒนา Application บน NanoCAD ได้แล้ว แถมเลือกได้หลายวิธีอีกด้วย
Read more...

แก้ปัญหาการใช้งาน Windows 8

หลังติดตั้ง Windows 8 ท่านจะพบความมึนงง ในการปรับแต่ง Windows
เพราะ Control Panel หายไปแล้ว เปิดไฟล์ Excel ที่ทำค้างไว้ก็เป็นตัวยึกยือซะนี่
Read more...

โครงการอบรมผู้ช่วยผู้จัดการ

โครงการอบรมนักศึกษา เพื่อให้สามารถทำงานในหน้าที่ผู้ช่วยผู้จัดการ ของสถานประกอบการ SME ได้
Read more...


การนับปริมาณวัสดุ BOQ ด้วยภาษา Sketchup Ruby

  • การส่ง BOQ Face ไปยัง Excel ด้วยไฟล์ CSV Read more...
  • การส่ง BOQ ของ Components ไปยัง Excel ด้วยไฟล์ CSV Read more...

แนะนำ Sketchup Plugin ที่น่าสนใจ

Plugin คือ คำสั่งที่เขียนเสริมความสามารถของ Sketchup ให้ทำงานได้ง่ายขึ้น ส่วนมากจะเขียนด้วย Sketchup Ruby

แหล่งรวมรวม Sketchup Plugin จะมีดังนี้ คือ

แต่พบว่าผู้ใช้ Sketchup ไม่เข้าใจวิธีติดต้ัง และการใช้งาน plugin เนื่องจากเว็บที่กล่าวมาข้างต้นไม่ได้บอกไว้
ผมเลยขอแนะนำ วิธีติดต้ัง และการใช้งาน plugin ที่มีประโยชน์
โฟลเดอร์ Sketchup Plugins คือ

Sketchup 7
Windows 32 bit
C:\Program Files\Google\Google SketchUp 7\Plugins
Windows 64 bit
C:\Program Files (x86)\Google\Google SketchUp 7\Plugins

Sketchup 8
Windows 32 bit
C:\Program Files\Google\Google SketchUp 8\Plugins
Windows 64 bit
C:\Program Files (x86)\Google\Google SketchUp 8\Plugins
Rotate 90 degree หมุนวัตถุที่เลือก 90 องศา ในแกน X,Y, หรือ Z
Read more...


Keyword:ภาษา Ruby Sketchup plugin, อบรม Sketchup Test QuickSketchup

Wednesday, June 6, 2012

Quick Sketchup : เข้าใจการสร้างผนังแบบ Single Wall

โดย ประยุทธ พันธุลาภ


ดาวน์โหลด


skp



เปิดไฟล์ที่ดาวน์โหลด

Scale แกนสีแดง 3.8m

Scale แกนสีน้ำเงิน 2.8m



Keyword:ภาษา Ruby Sketchup plugin, การใช้ Sketchup

Quick Sketchup : เข้าใจการใช้ Scale Tool #2

โดย ประยุทธ พันธุลาภ


ถ้าเราต้องการปรับสเกลในแกนที่ต้องการให้มีระยะใหม่ ทำอย่างไรจึงจะง่ายที่สุดโดยไม่ต้องคำนวณสเกลใหม่

จากตัวอย่าง เรามีคานยาว 4 เมตร อยู่ แต่เราต้องการแก้ไขเป็น 3.2 เมตร




เราใช้ Scale Tool เลือกแกนสีเขียว




แล้วพิมพ์ค่า 3.2m แล้วกดปุ่ม Enter

Quick Sketchup : เข้าใจการใช้ Scale Tool

โดย ประยุทธ พันธุลาภ





เข้าใจการใช้ Scale Tool

ดาวน์โหลดไฟล์

ไฟล์ skp


ปรับทุกแกนพร้อมกัน (XYZ-axis)

  • เลือก Scale Tool
  • เลือกวัตถุ
  • คลิกที่ Grip สีเขียวที่มุมใดก็ได้ จะเปลี่ยนเป็นสีแดง



  • เลื่อนเมาส์ออกไป
  • พิมพ์ค่า Scale ที่ต้องการ




ปรับเฉพาะแกนสีแดง ( X-axis)

  • เลือก Scale Tool
  • เลือกวัตถุ
  • คลิกที่ Grip สีเขียวตรงกลางในแนวแกนสีแดง จะเปลี่ยนเป็นสีแดง



  • เลื่อนเมาส์ออกไป
  • พิมพ์ค่า Scale ที่ต้องการ




ปรับเฉพาะแกนสีเขียว ( Y-axis)


  • เลือก Scale Tool
  • เลือกวัตถุ
  • คลิกที่ Grip สีเขียวตรงกลางในแนวแกนสีเขียว จะเปลี่ยนเป็นสีแดง



  • เลื่อนเมาส์ออกไป
  • พิมพ์ค่า Scale ที่ต้องการ





ปรับเฉพาะแกนสีน้ำเงิน ( Z-axis)


  • เลือก Scale Tool
  • เลือกวัตถุ
  • คลิกที่ Grip สีเขียวตรงกลางในแนวแกนน้ำเงิน จะเปลี่ยนเป็นสีแดง



  • เลื่อนเมาส์ออกไป
  • พิมพ์ค่า Scale ที่ต้องการ




Keyword:ภาษา Ruby Sketchup plugin, การใช้ Sketchup

Quick Sketchup : เข้าใจการแก้ไข Group

โดย ประยุทธ พันธุลาภ


การแก้ไข Group



Keyword:ภาษา Ruby Sketchup plugin, การใช้ Sketchup

Quick Sketchup : เข้าใจการสร้าง Group

โดย ประยุทธ พันธุลาภ

เข้าใจการสร้าง Group




Keyword:ภาษา Ruby Sketchup plugin, การใช้ Sketchup

Saturday, May 19, 2012

QuickSketchup Ruby : การหาชื่อวัสดุของผิวที่เลือก

โดย ประยุทธ พันธุลาภ

บทความก่อนหน้า หาพื้นที่จากผิวที่เลือกเป็นตารางเมตร


จากตัวอย่างที่แล้ว เราแปลงพื้นที่ของ face เป็น ตารางเมตร ด้วยค่าคงที่ 1.m ของ Sketchup Ruby ไปแล้ว

สิ่งที่เราอยากรู้ต่อไป คือ ชื่อวัสดุของ face


ดาวน์โหลดไฟล์ตัวอย่าง

1.ไฟล์ Sketchup
ไฟล์ area2.skp
Save ไว้ในโฟลเดอร์ C:\myruby

2.ไฟล์ Ruby
ไฟล์ area2th.rb
Save ไว้ในโฟลเดอร์ C:\myruby


โปรแกรมเริ่มใต้เส้น #ตัวอักษรสีเขียว คือ คอมเมนท์


##กำหนดให้ตัวแปร model เป็น Sketchup active model
model = Sketchup.active_model

##กำหนดให้ตัวแปร selection เป็น object ทั้งหมดที่ถูกเลือกบนหน้าจอ
##ถ้าไม่มีวัตถุถูกเลือก selection จะมีค่าเป็น nil
selection = model.selection

##กำหนดให้ตัวแปร entity เป็น วัตถุชิ้นแรกที่ถูกเลือกใน selection
## selection[0] = วัตถุชิ้นแรก selection[1] = วัตถุชิ้นที่สอง
entity = selection[0]

##ตรวจสอบว่า entity เป็นผิว (Face) หรือไม่
if entity.class == Sketchup::Face ##ถ้าentity เป็นผิว ( Face) ทำงานจนกว่าจะพบคำว่า end
##พิมพ์ข้อความด้านล่าง
puts "Face area in sq.inch is"
##พิมพ์ค่าพื้นที่ของ entity จะมีหน่วยเป็น ตารางนิ้ว
puts entity.area
##พิมพ์คำว่า Value of 1.m is เป็นค่าแปลงหน่วยจาก เมตรเป็นนิ้ว ของ Sketchup Ruby
puts "Value of 1.m is"
##พิมพ์ค่า 1.m
puts 1.m
##แปลงค่าพื้นที่ของ entity เก็บไว้ในตัวแปรชื่อ area_m จะมีหน่วยเป็น ตารางเมตร
area_m = entity.area / (1.m * 1.m)
##พิมพ์ค่าพื้นที่ของ entity จะมีหน่วยเป็น ตารางเมตร
puts "Face area in sq.m. is"
puts area_m
##ตรวจสอบว่า entity มีค่า material หรือไม่
if entity.material
##กรณีที่ entity มีค่า material
puts "************************"
##พิมพ์ค่าของ entity.material
puts "entity.material is "
puts entity.material
puts "************************"
##พิมพ์ค่าของ entity.material.name
puts entity.material.name
puts "************************"
##พิมพ์ค่าของ entity.material.display_name
puts "entity.material.display_name is"
puts entity.material.display_name
else
##กรณีไม่มีวัสดุ
puts "entity has no material it's value is"
puts entity.material
end ##if entity.material not nil

end ##จบคำสั่ง if entity.class == Sketchup::Face



ทดสอบกับโปรแกรม Sketchup

1. สร้างสี่เหลี่ยม ขนาด 1x2 ตร.ม. แล้วเทวัสดุ Stone_Flagstone_Ashlar หรือ เปิดไฟล์ area2.skp ที่ดาวน์โหลดมาจากด้านบน

2. คลิกที่ผิว


คลิกที่ภาพเพื่อขยาย



3. เปิด Ruby Console พิมพ์

load 'c:\\myruby\\area2th.rb'

แล้วกดปุ่ม Enter บนคีย์บอร์ด

ดูผลลัพธ์ใน Ruby Console

กรณีที่ face มีวัสดุ


คลิกที่ภาพเพื่อขยาย

ถ้าท่านสร้างผิวขึ้นมาใหม่ โดยที่ไม่เทวัสดุ เลือกผิวใหม่แล้ว Run

กรณีที่ face ไม่มีวัสดุ


คลิกที่ภาพเพื่อขยาย







สรุป


face จะมีคุณสมบัติเกี่ยวกับวัสดุ อยู่ 3 ประเภท คือ

1.ค่า entity.material เป็นค่าที่ Sketchup Ruby ใช้เก็บข้อมูล แต่เราอ่านไม่ออก เช่น #<Sketchup::Material:0x83cccc0>

2.ค่า entity.material.name เป็นค่าที่ Sketchup Ruby ใช้เก็บข้อมูลชื่อของวัสดุ เช่น [Stone_Flagstone_Ashlar]

3.ค่า entity.material.display_name เป็นค่าที่ Sketchup Ruby แสดงชื่อของวัสดุใน paint Bucket เช่น

คลิกที่ภาพเพื่อขยาย



ต่อไป

การหาพื้นที่หลายผิวมารวมกัน
Keyword: อบรม Sketchup

QuickSketchup Ruby : หาพื้นที่จากผิวที่เลือกเป็นตารางเมตร

โดย ประยุทธ พันธุลาภ

บทความก่อนหน้า หาพื้นที่จากผิวที่เลือก


จากตัวอย่างที่แล้ว เราหาพื้นที่ของ face เป็น ตารางนิ้วจากคุณสมบัติของ face.area

ในตัวอย่างนี้เราจะแปลงพื้นที่จาก ตารางนิ้ว เป็น ตารางเมตร ด้วยค่าคงที่ 1.m ของ Sketchup Ruby

ซึ่งมีค่าเท่ากับ 39.3700787401575


ดาวน์โหลดไฟล์ตัวอย่าง

1.ไฟล์ Sketchup
ไฟล์ area1.skp
Save ไว้ในโฟลเดอร์ C:\myruby

2.ไฟล์ Ruby
ไฟล์ area1m.rb
Save ไว้ในโฟลเดอร์ C:\myruby


โปรแกรมเริ่มใต้เส้น #ตัวอักษรสีเขียว คือ คอมเมนท์


##กำหนดให้ตัวแปร model เป็น Sketchup active model
model = Sketchup.active_model

##กำหนดให้ตัวแปร selection เป็น object ทั้งหมดที่ถูกเลือกบนหน้าจอ
##ถ้าไม่มีวัตถุถูกเลือก selection จะมีค่าเป็น nil
selection = model.selection

##กำหนดให้ตัวแปร entity เป็น วัตถุชิ้นแรกที่ถูกเลือกใน selection
## selection[0] = วัตถุชิ้นแรก selection[1] = วัตถุชิ้นที่สอง
entity = selection[0]

##ตรวจสอบว่า entity เป็นผิว (Face) หรือไม่
if entity.class == Sketchup::Face ##ถ้าentity เป็นผิว ( Face) ทำงานจนกว่าจะพบคำว่า end
##พิมพ์ข้อความด้านล่าง
puts "Face area in sq.inch is"
##พิมพ์ค่าพื้นที่ของ entity จะมีหน่วยเป็น ตารางนิ้ว
puts entity.area
##พิมพ์คำว่า Value of 1.m is เป็นค่าแปลงหน่วยจาก เมตรเป็นนิ้ว ของ Sketchup Ruby
puts "Value of 1.m is"
##พิมพ์ค่า 1.m
puts 1.m
##แปลงค่าพื้นที่ของ entity เก็บไว้ในตัวแปรชื่อ area_m จะมีหน่วยเป็น ตารางเมตร
area_m = entity.area / (1.m * 1.m)
##พิมพ์ค่าพื้นที่ของ entity จะมีหน่วยเป็น ตารางเมตร
puts "Face area in sq.m. is"
puts area_m

end ##จบคำสั่ง if entity.class == Sketchup::Face



ทดสอบกับโปรแกรม Sketchup

1. สร้างสี่เหลี่ยม ขนาด 1x2 ตร.ม. หรือ เปิดไฟล์ area1.skp ที่ดาวน์โหลดมาจากด้านบน

2. คลิกที่ผิว



คลิกที่ภาพเพื่อขยาย



3. เปิด Ruby Console พิมพ์

load 'c:\\myruby\\area1m.rb'

แล้วกดปุ่ม Enter บนคีย์บอร์ด

ดูผลลัพธ์ใน Ruby Console



คลิกที่ภาพเพื่อขยาย


จะเห็นว่ามีพื้นที่ค่า 2 ตารางเมตร เพิ่มขึ้นมา



สรุป


หน่วยความยาวใน Sketchup Ruby เป็น นิ้ว


หน่วยพื้นที่ใน Sketchup Ruby เป็น ตารางนิ้ว


ดังนั้นต้องแปลงค่าหน่วยให้เป็น เมตร หรือ ตารางเมตร ก่อน ด้วยค่า 1.m หรือ 39.3700787401575

สำหรับปริมาณงานที่ต้องการ


บทความต่อไป

การหาชื่อวัสดุของผิวที่เลือก

Keyword:ภาษา Ruby Sketchup plugin, อบรม Sketchup

Sunday, May 6, 2012

QuickSketchup Ruby : หาพื้นที่จากผิวที่เลือก

โดย ประยุทธ พันธุลาภ

บทความก่อนหน้า โปรแกรมแรก hello.rb

ปรกติแล้วสิ่งที่เราอยากทราบจาก โมเดลก็คือปริมาณงาน และส่วนมากก็จะเป็น ผิว (Face) ที่มีวัสดุเทอยู่

เราลองเริ่มจากเขียนโปรแกรม หาพื้นที่ผิวจากวัตถุที่เราเลือกมาดูสัก 1 ชิ้นก่อน


ดาวน์โหลดไฟล์ตัวอย่าง

1.ไฟล์ Sketchup
ไฟล์ area1.skp
Save ไว้ในโฟลเดอร์ C:\myruby

2.ไฟล์ Ruby
ไฟล์ area1.rb
Save ไว้ในโฟลเดอร์ C:\myruby


โปรแกรมเริ่มใต้เส้น #ตัวอักษรสีเขียว คือ คอมเมนท์


##กำหนดให้ตัวแปร model เป็น Sketchup active model
model = Sketchup.active_model

##กำหนดให้ตัวแปร selection เป็น object ทั้งหมดที่ถูกเลือกบนหน้าจอ
##ถ้าไม่มีวัตถุถูกเลือก selection จะมีค่าเป็น nil
selection = model.selection

##กำหนดให้ตัวแปร entity เป็น วัตถุชิ้นแรกที่ถูกเลือกใน selection
## selection[0] = วัตถุชิ้นแรก selection[1] = วัตถุชิ้นที่สอง
entity = selection[0]

##ตรวจสอบว่า entity เป็นผิว (Face) หรือไม่
if entity.class == Sketchup::Face ##ถ้าentity เป็นผิว ( Face) ทำงานจนกว่าจะพบคำว่า end
##พิมพ์ข้อความด้านล่าง
puts "Face area in sq.inch is"
##พิมพ์ค่าพื้นที่ของ entity จะมีหน่วยเป็น ตารางนิ้ว
puts entity.area

end ##จบคำสั่ง if entity.class == Sketchup::Face



ทดสอบกับโปรแกรม Sketchup

1. สร้างสี่เหลี่ยม ขนาด 1x2 ตร.ม. หรือ เปิดไฟล์ area1.skp ที่ดาวน์โหลดมาจากด้านบน

2. คลิกที่ผิว



คลิกที่ภาพเพื่อขยาย



3. เปิด Ruby Console พิมพ์

load 'c:\\myruby\\area1.rb'

แล้วกดปุ่ม Enter บนคีย์บอร์ด

ดูผลลัพธ์ใน Ruby Console



คลิกที่ภาพเพื่อขยาย


จะเห็นว่าพื้นที่ไม่ใช่ค่า 2 ตารางเมตร แต่เป็น 3100.0062 ตารางนิ้ว



สรุป


หน่วยความยาวใน Sketchup Ruby เป็น นิ้ว


หน่วยพื้นที่ใน Sketchup Ruby เป็น ตารางนิ้ว


ดังนั้นต้องแปลงค่าหน่วยให้เป็น เมตร หรือ ตารางเมตร ก่อน สำหรับปริมาณงานที่ต้องการ

แต่ในการคำนวณต้องแปลงค่ากลับไปเป็นค่าของ ระบบนิ้ว เสมอ ฟังก์ชันของ Sketchup Ruby จึงจะทำงานถูกต้อง


บทความต่อไป

หาพื้นที่จากผิวที่เลือกเป็นตารางเมตร


Keyword:ภาษา Ruby Sketchup plugin

Saturday, May 5, 2012

โปรแกรมแรก hello.rb

โดย ประยุทธ พันธุลาภ


บทความก่อนหน้า เลือกใช้ Notepad++ สำหรับเขียน Ruby

ดาวน์โหลดไฟล์ตัวอย่าง

ถ้าท่านยังไม่อยากพิมพ์ ให้ดาวน์โหลดไฟล์ตัวอย่าง hello.rb แล้ว Save ไฟล์ชื่อ hello.rb ลงในโฟลเดอร์ C:\myruby

ขั้นตอนเขียนโปรแกรม hello.rb ด้วย Notepad++

  1. สร้างโฟลเดอร์ C:\myruby
  2. เปิดโปรแกรม Notepad++
  3. เมนู File > New
  4. พิมพ์
    puts "Hello World"


  5. เมนู File > Save As ตั้งชื่อไฟล์ hello.rb ลงในโฟลเดอร์ C:\myruby


คลิกที่ภาพเพื่อขยาย


ทดสอบโปรแกรม hello.rb

- รันโปรแกรม Sketchup

- ที่โปรแกรม Sketchup เลือกเมนู Window > Ruby Console


คลิกที่ภาพเพื่อขยาย

พิมพ์ในช่องว่างของ Ruby Console

load 'c:\\myruby\\hello.rb'

แล้วกดปุ่ม Enter บนคีย์บอร์ด


คลิกที่ภาพเพื่อขยาย

*แต่ถ้าไม่อยากพิมพ์ให้ Copy แล้ว Paste ลงในช่องว่างของ Ruby Console แล้วกดปุ่ม Enter บนคีย์บอร์ด ก็ได้เช่นกัน ดูผลลัพธ์ใน Ruby Console


คลิกที่ภาพเพื่อขยาย

แก้โปรแกรม hello.rb

กลับไปที่โปรแกรม Notepad++ แก้คำว่า Hello World เป็น
puts "Hello World Again."

Save ไฟล์ซ้ำชื่อเดิม

ทดสอบโปรแกรม hello.rb อีกครั้ง


คลิกที่ช่องว่างใน Ruby Console กดปุ่มลูกศร Up บนคีย์บอร์ด จะเป็นการเรียกคำสั่งที่พิมพ์ ก่อนหน้ากลับมาใช้ได้อีก โดยไม่ต้องพิมพ์ใหม่ load 'c:\\myruby\\hello.rb' แล้วกดปุ่ม Enter บนคีย์บอร์ด

ดูผลลัพธ์ใน Ruby Console จะเห็นการเปลี่ยนแปลง


คลิกที่ภาพเพื่อขยาย




สรุป

เราจะเห็นขั้นตอนการเขียนโปรแกรม และใช้งาน Ruby บน Sketchup ดังนี้
  1. ที่โปรแกรม Notepad++ เขียนโปรแกรม Ruby
  2. ที่โปรแกรม Notepad++ Save ไฟล์ลงในโฟลเดอร์ที่ต้องการเก็บไฟล์ ในตัวอย่างคือ c:\myruby\hello.rb
  3. ที่โปรแกรม Sketchup เปิดวินโดว์ Ruby Console
  4. ที่โปรแกรม Sketchup โหลดไฟล์มาใช้งานโดย คำสั่ง load 'c:\\myruby\\hello.rb' แล้วกดปุ่ม Enter บนคีย์บอร์ด
  5. ที่โปรแกรม Sketchup ดูผลลัพธ์ที่วินโดว์ Ruby Console
  6. ที่โปรแกรม Notepad++ กลับไปแก้ไขโปรแกรม Ruby แล้ว Save ในชื่อไฟล์เดิม
  7. ที่โปรแกรม Sketchup กดปุ่มลูกศร UP บนคีย์บอร์ด จะได้คำสั่งเดิมกลับมา แล้วกดปุ่ม Enter บนคีย์บอร์ด เพื่อโหลดไฟล์ Ruby ที่เพิ่งแก้ไขกลับมาใหม่อีกครั้ง จะเห็นการเปลี่ยนแปลง

บทความต่อไป หาพื้นที่จากผิวที่เลือก
Keyword:ภาษา Ruby Sketchup plugin

QuickSketchup Ruby : เลือกใช้ Notepad++ สำหรับเขียน Ruby

โดย ประยุทธ พันธุลาภ

บทความก่อนหน้า QuickSketchup Ruby

ก่อนอื่นเราต้องมี Ruby editor ที่เหมาะสมในการพัฒนาสักโปรแกรมก่อน

ดาวน์โหลดโปรแกรม Notepad++


ดาวน์โหลดโปรแกรม Notepad++ ได้จาก http://notepad-plus-plus.org/


เมื่อดาวน์โหลดเสร็จ ก็ติดตั้งโปรแกรม Notepad++ ได้เลย


เป็นอันว่าท่านมีเครื่องมือพัฒนา Sketchup Ruby อย่างง่ายเรียบร้อยแล้ว


บทความต่อไป...

โปรแกรมแรก hello.rb


Keyword:ภาษา Ruby Sketchup plugin

QuickSketchup Ruby

โดย ประยุทธ พันธุลาภ


เราจะมาลองเขียนโปรแกรม Ruby เสริมให้ Sketchup สามารถถอด BOQ ของ Face กันสักหน่อย

สิ่งที่ต้องเตรียมก่อนล่วงหน้า

1. หัดใช้คำสั่ง Sketchup ให้เป็นก่อน

เพราะการเขียนโปรแกรม Ruby จะเป็นการเลียนแบบการสร้างโมเดล Sketchup ด้วยมือ ถ้าท่านไม่สามารถสร้างโมเดลด้วยมือได้ ก็ไม่สามารถเขียนโปรแกรม Ruby ได้เช่นกัน

2.ภาษาอังกฤษ สำหรับอ่านเอกสารประกอบ
ผมอธิบายเฉพาะหลักการสำคัญ ส่วนรายละเอียดท่านต้องอ่านเพิ่มเติมจาก Link ที่ผมจะให้ไว้ในตอนท้าย ซึ่งแน่นอนว่าเป็น ภาษาอังกฤษ ทั้งหมด


3. บทความนี้จะเน้นเฉพาะการถอด BOQ ของ Face เท่านั้น
เพื่อให้ง่ายต่อความเข้าใจ เพราะความจริงการเขียน Sketchup Ruby เกือบทั้งหมดเป็นคำสั่งของ Sketchup มีส่วนที่เป็น Ruby น้อยกว่ามาก และใช้ความรู้เกี่ยวกับ Vector, Matrix, Analytical Geometry ค่อนข้างมาก เอาเป็นว่าท่านไม่ต้องสนใจที่กล่าวมา เรามาเตรียมตัวเขียนโปรแกรม Sketchup Ruby เพื่อถอด BOQ ของ Face กันเลยดีกว่า

ดูบทความต่อไปได้เลยครับ




ต่อไป

เลือกใช้ Notepad++ สำหรับเขียน Ruby


Keyword:ภาษา Ruby Sketchup plugin

เข้าใจขั้นตอนการสร้าง Component ที่มีช่องเปิด Opening #2

โดย ประยุทธ พันธุลาภ


บทความนี้ ต่อเนื่องมาจาก เข้าใจขั้นตอนการสร้าง Component ที่มีช่องเปิด Opening

ขั้นตอนการสร้างComponent ที่มีช่องเปิด (Opening)



จแสดงให้เห็นว่า ถ้า Component มีความหนาจะเป็นอย่างไร


สร้าง Component ที่จุด 0,0




Push/Pull ลงด้านล่าง เพิ่มความหนา



ลบผิวด้านบนสุดออก


เราได้ต้นแบบเรียบร้อยแล้ว ต่อไปนำไปสร้างเป็น Component

สร้างเป็น Component


เลือกวัตถุทั้งหมด



คลิกขวา เลือก Make Component


ตั้งชื่อ Component เป็น W-102 แล้วคลิกที่ Set Component Axes



คลิกที่จุด 0,0



เลื่อนมาทางแกน X หรือ แกนสีแดง แล้วคลิก



เลื่อนมาทางแกน Y หรือ แกนสีเขียวแล้วคลิก



กลับมาที่ หน้าจอสร้าง Component


เลือก Glue To Any และ Cut Opening เป็นเครื่องหมายถูก จะมองเห็นระนาบตัดเป็นสีจางๆ แล้วคลิกปุ่ม Create



เสร็จการสร้าง Component


ทดสอบการทำงานของ Component


สร้างสี่เหลี่ยมขนาด 4x4 ตารางเมตร



Push/Pull ขึ้นมา 3 เมตร


ที่เมนู Window>Components



แล้วคลิกที่รูปบ้าน ให้แสดงเฉพาะ Component ที่อยู่ในไฟล์นี้เท่านั้น


คลิกที่ W-102 แล้วลากมาวางบนผนังห้อง




จะเห็นว่าผนังจะถูกตัดออก



มุมมองในห้อง





ตัวอย่างไฟล์ทดสอบ


ไฟล์ทดสอบ Cut Opening2


Keyword:ภาษา Ruby Sketchup plugin, การใช้ Sketchup, cut opening