วันพฤหัสบดีที่ 20 ธันวาคม พ.ศ. 2561

Azure SQL Server Cloud กับภาษาไทย

Azure SQL Server เป็นระบบ Cloud โดยที่ไม่ต้องมี Server แต่ใช้ Cloud ของ Microsoft แทน โดยให้ฟรีถ้า Database ไม่เกิน 250 Mbyte (ถ้าเป็นตัวหนังสือ ส่วนมากไม่เกิน 100 Mbyte)
SQL Server เป็น Version ล่าสุด 2017 โดยการสร้าง Database จะ Default เป็น us_english การเปลี่ยนภาษาไทย จะต้องใช้ Command query ใหม่
ต้อง Connect กับ SQL server cloud ก่อน ใช้ SQL Management studio
connection site เช่น
 mybookname.database.windows.net,1433
และตามด้วย username,password

1433 หมายถึง SQL Server standard port

ใช้ SQL Management แล้วสร้าง query

1. Check ภาษาปัจจุบัน
select @@language

2. ดูว่า Keyword ที่จะเปลี่ยนมีอะไรบ้าง
exec sp_helplanguage
Go

3. ตั้งค่า ภาษาไทย
set Language 'Thai'

4 สำคัญมาก ต้อง Create Database ด้วย THAI_CI_AS
CREATE DATABASE TestDB
COLLATE  THAI_CI_AS;  

GO  

Note การ Connect กับ Server ต้อง Allow Firewall ต้องเข้าไปที่ Database ที่ตั้งอยู่
และ Add Current IP กับ Save


การ Transfer data สามารถใช้ Import Export Tool ของ SQL Sever 2017 Management ได้

แต่มีข้อที่สำคัญมาก ในการ Transfer Table จาก Tool Management  Table Field ไม่ compatible ในบาง Field เช่น nullable เป็นต้น


นำ Section เหล็กจาก Robot มาใช้ใน Revit

Revit มี Family ของ Section เหล็กจำนวนไม่มาก แต่ ใน Robot Structure มีหลาย พัน แบบและมีค่า Parameter ของการคำนวน Structure เสร็จในตัว ดังนั้น ในการออกแบบ BIM ให้ คำนวนได้ เลย ก็ควรจะใช้ Family ที่ Generate จาก Robot มาที่ Revit
วิธีการทำงาน
ให้ เขียนเหล็ก จาก column ใน Revit เป็นตัวอย่าง ง่ายๆ
จากนั้นส่ง ไปที่ Analyze->Robot Structural Analysis Link ส่ง Send

ใน Robot จะแสดง กดที่ Show section ด้านล่าง
ไปที่ Section ที่ เมนูด้าน ขวา(สังเกตุที่ลูกศร)


กด เปิด และเลือก เพิ่ม แบบที่ต้องการ เลือกที่แสดงรูป(Display) จะดีเพราะมีจำนวนมาก

แล้วเลือกที่เสา เปลี่ยนเป็นแบบที่ต้องการ

กลับไปที่ Revit กด Analyze->Robot Strutural Analysis Link และ เลือก Update


จะได้ รูปใหม่โดยที่จะสร้าง Family ชื่อตาม ชนิดของเหล็ก และ เหล็กนี้ จะนำไปคำนวนใน Robot ได้ สามารถ Save Family ได้


สร้าง OneWay Slab จาก Floor Revit ไป Robot

ใน Revit จะมี Floor แต่การคำนวนจะเป็น Mesh โดยคำนวนเป็นแผ่น เมื่อดู Deform จะเห็นแอ่นกลาง

กรณีที่เป็น Oneway Slab จะต้องกำหนดใน Robot ใน Revit ไม่มี Parameter นี้(มีเวลาจะเขียนให้)
การทำ ต้องไปกำหนดที่ Geometry -> Properties->Panel Calculation Model

จะมี Oneway Slab ให้เลือก
เลือก Panel จาก Object Inspector ตามตัวเลข
และ เลือกทิศจาก Local Panel Direction

เลือก Defintion.. และ Cartesian  และ กดเลือก Vector ทิศที่เป็นคานวาง เลือก Panel number เดิม
คำนวนใหม่

ผลจะเปลี่ยน โดยด้านที่ไม่มีคานจะแอ่นลง

การส่งข้อมูลคำนวน จาก Robot Structure analysis ไปที่ text .CVS

ให้กดเมาวส์ขวา และ เลือก Export to CVS


ตัวอย่าง code โดย VB เป็น Com Register

Private Sub CommandButton1_Click()

Dim RobApp As RobotApplication
Set RobApp = New RobotApplication
Dim t As RobotTable
Dim tf As RobotTableFrame
Dim path As String
Dim Fullpath As String
Dim FName As String

path = Environ$("temp")
Dim nTables As Long

nTables = RobApp.Project.ViewMngr.TableCount
If nTables = 0 Then
    MsgBox "No table opened"
    Exit Sub
End If

For I = 1 To nTables

        Set tf = RobApp.Project.ViewMngr.GetTable(I)
        FName = tf.Window.Caption
        spacepos = InStr(1, FName, " ")
        If spacepos <> 0 Then
            FName = Left(FName, spacepos)
        End If
        
        ntabs = tf.Count

        For j = 1 To ntabs
            tf.Get(j).Window.Activate
            Set t = tf.Get(j)
            tf.Current = j
            tabname = tf.GetName(j)
            DoEvents
            
Fullpath = path + "\" + FName + tabname + ".csv"

t.Printable.SaveToFile Fullpath, I_OFF_TEXT


NP = Shell("C:\WINDOWS\notepad.exe " + Fullpath, vbNormalFocus)
AppActivate NP
SendKeys "%ER", 1

'replacing decimal separator
SendKeys ",", 1
SendKeys "{TAB}", 1
SendKeys ".", 1
''''''''''''''''''''''''''''

SendKeys "%A", 1
SendKeys "%{F4}", 1
SendKeys "%ER", 1

'replacing column separator
SendKeys ";", 1
SendKeys "{TAB}", 1
SendKeys ",", 1
'''''''''''''''''''''''''''

SendKeys "%A", 1
SendKeys "%{F4}", 1
SendKeys "%FA", 1
SendKeys Fullpath, 1
SendKeys "%E", 1
SendKeys "{DOWN}", 1
SendKeys "{DOWN}", 1
SendKeys "{UP}", 1
SendKeys "{UP}", 1
SendKeys "{UP}", 1
SendKeys "{ENTER}", 1
SendKeys "%S", 1
SendKeys "%Y", 1
SendKeys "%FX", 1

DoEvents
Workbooks.Open Fullpath

        Next j
Next I

MsgBox "Dumping finished"

Set RobApp = Nothing
End Sub

โปรแกรม Robot Structure ใช้แล้ว Dialog ใน RC Reinforcement หาย

Dialog ของ RC Reinforcement ของ Autodesk Robot structure ถ้าปิดไปแล้ว มักจะหาไม่เจอว่าจะเปิดอย่างไร เช่น

ในถาพ Section Dialog หายไป
วิธีแก้ให้เรียก Tools->Customize->Open Layout from Template จะเรียก กลับมา



วันจันทร์ที่ 17 ธันวาคม พ.ศ. 2561

Word2vec เครื่องมือใน AI เหมือน Geometry ใน CAD

เครื่องมือที่น่าอัศจรรย์ มากในการทำงาน AI ตัวหนึ่งคือ Word2Vec  หรือ
Word2Vector เป็นการพัฒนาการโดย บริษัท Google และกลายเป็น Standard ในการทำ Recognition , Deep learning โดย จักรกล สามารถเดา ข้อความที่มีการสื่อสารของ คนได้ (เพราะเครื่องจักร ไม่รู้จักความหมาย ต้องเป็นตัวเลข ถึงจะเข้าใจ)

https://code.google.com/archive/p/word2vec/

ของ microsoft
https://github.com/GuntaButya/Word2Vec.Net-CSharp

หลักการ Word2Vec จะเปลี่ยน Word แต่ละ ตัวให้มีน้ำหนัก ใน Array ตามจำนวนของตัวหนังสือที่ใช้งานในรูปแบบของ Vector เช่น ภาษาอังกฤษมีคำใช้งาน ประมาณ 3000 คำ คำว่า
English ก็จะมี ค่า เป็น [ 0.2 , 0.01.... (ไป 3000 ตัว)] เป็นต้น โดย เมื่อมีการ Train ด้วย AI Learning
บอกว่า บทความนี้ เป็นเรื่องอะไร จดหมายอะไร ก็จะได้ค่า เฉพาะออกมา เมื่อ ต้องการใช้งาน เช่น ต้องการบอก ว่า
Book เทียบกับ Paper ก็ให้นำ Vector ทั้ง 2 มาหา Dot ระะหว่างกัน โดยหลักการ Distance ก็ทำแบบ CAD เลย คือ
 Vector(Book)-Vector(Paper) แล้วหาความยาว
โดยที่ D จะแสดงความไกล้และ ไกล ออกมาถ้าไกล้ 1 แสดงว่าข้อความเป็นพวกเดียวกัน เป็นต้น
เมื่อมาใช้งาน ในการอ่านเอกสาร ก็จะมีการนำไป Operator + ก็จะได้ผลบอกว่าเอกสารนั้น ประมาณเรื่องอะไร เช่น จดหมาย สมัครงาน, ขาย ของ, หรือ Spam เป็นต้น
การทดลอง Online ทดสอบ ได้ จาก Web นี้

http://bionlp-www.utu.fi/wv_demo/

เลือก เป็น Model เป็น English GoogleNew
ทดลอง เทียบ Similar Two word
Bangkok กับ Thailand




และ ลองเปลียน Thailand กับ China


จะเห็นได้ว่า ค่า Bangkok Thailand มีค่ามากกว่า แสดงว่ามีความไกล้เคียงกัน
สำหรับภาษาไทย มี Library อยู่ หลายคน จะเป็น ค่า Matrix ตามจำนวนคำในภาษาไทย แต่ละคนจะไม่เท่ากัน



Customize Revit ให้ Project Browser ไม่แสดง Ceiling Plan

การแสดง และไม่แสดง Ceiling Plan ในการทำงาน บางครั้ง จะมีปัญหาสำหรับมือใหม่ ในการวางผิด แปลน จาก Floor plan เป็น Ceiling Plan ต้อง เสียเวลาแก้ไข
วิธีง่าย เพื่อป้อง กัน ให้ Customize View ของ Project Browser

เมนู
 User Interface -> Browser Organization
โดย การ New ตัวอย่าง "fl"


กดที่ Edit

เลือก เป็น Family และ ให้ Equal to(เท่ากับ) Floor Plans
แล้วกด Ok

ดูผล ใน Project Browser จะไม่มี Ceiling Plan ถ้าต้องการ อย่างอื่น ก็สามารถใช้ ตรรก Not And เท่ากับ OR ได้
เช่นไม่ต้องการ Ceiling Plan ก็ต้อง not Equal Ceiling Plan แทน


กรณีเป็น Not equal








วันพฤหัสบดีที่ 13 ธันวาคม พ.ศ. 2561

ระบบ Autocad ARX wizard ข้าม Version 2017->18->19

Autocad ARX Wizard สำหรับการพัฒนาโปรแกรม ด้วย C++ เป็นการสร้าง Project สำหรับ Visual Studio ให้โดยอัตโนมัติ ตาม Version ของ Autocad เช่น ARX Wizard ของ Autocad 2017 ก็จะ ได้เฉพาะ Autocad 2017 จะข้ามไป 2018 ไม่ได้ โดยตรง ต้องทำตามนี้
เมื่อ Visual Studio 2015 จะสร้าง File ให้ เป็น File Property 4 File ที่ใช้ควบคุม Environment
ได้แก่
<ชื่อProject>.vcxproj
Autodesk.arx-2017.props
Autodesk.arx-2017-net.props
crx.props

ให้ copy เป็น Version ที่ต้องการ สำหรับ ชื่อโครงการให้ไม่ตรงกัน แก้ที่ 2017 เป็น 2018 หรือ 2019( ต้องใช้ Visual studio 2017 platform 141)
แล้วเปิด file ทั้ง 4 ด้วย Notepad และ File and Replace 2017 เป็น 2018 หรือ 2019 ตามต้องการ
แล้วเปิด โครงการใหม่.vcxproj โปรแกรมจะสร้าง .sln ให้ใหม่ เอง
เวลา compile ต้อง เลือก x86 หรือ x64 ด้วย ไม่นั้น All platform จะ errror