วันพฤหัสบดีที่ 14 มกราคม พ.ศ. 2559

การล้าง License ของ Autocad หรือ Revit เวลา เครื่องติด Virus (ต้องขอ License ใหม่)

มีปัญหาสำหรับเครื่องที่ติด virus ทำให้ License ของ Autocad หรือ Revit Error เปิด Run ไม่ได้ การล้าง
ให้เข้าไปที่
C:\programdata\Flexnet\
ค้น cmd.exe
c:
cd \programdata\Flexnet

โดย ทำการลบ ทั้งหมด โดย del *.*
หรือ ใช้ Explorer ก็ได้ เลือก File ทั้งหมด และกดที่ ปุ่ม [delete]
จากนั้น ไปทำการ Activate ใหม่

วันเสาร์ที่ 12 ธันวาคม พ.ศ. 2558

สร้าง Node เอง ด้วย C# ใน Dynamo

การ Custom Node มีประโยชน์​คือ ทำงานบางอย่างที่ Dynamo ไม่ได้ มีให้ หรือ งานหลายงาน อาจจะมีการเก็บ Code เก่าใว้ จะได้นำมาใช้ได้ 

Custom Node ใน Dynamo มีตัวอย่างมาก ที่เป็น ภาษาPython  หรือ การ Custom Node โดยใช้ Graphic ก็มีจำนวนมาก ให้ Searh google key word "Dynamo Custom Node" แต่ที่จะอธิบาย เป็นการนำ C# มาทำ custom node เพราะ มี Code จำนวนมาก(ของตัวเอง) เขียนใว้แล้ว  
ในเอกสาร ของ Dynamo จะมี Link ที่อธิบาย ในการสร้าง Code ที่เรียกว่า ZeroTouch 
ใน Link

ให้ Download Souce และ compile ในการ Compile Dll ที่ได้ ให้ Copy ลงใน Folder ของ Dynamo
ใน Revit เปิด Dynamo
และ ทำการเลือก Import Library

เลือก File ZeroTouchEssentials.dll จะเพิ่ม Menu ขึ้นมา
สำหรับ Code ที่เป็นตัวทำงานในแต่ละ Node ให้ดูใน Source

เช่น Double Length ก็จะแสดงง่ายใน Code แบบนี้

   public static double DoubleLength(Autodesk.DesignScript.Geometry.Curve curve)
        {
            return curve.Length * 2.0;
        }


ใน Dynamo จะแสดงแบบนี้


ง่ายอะไรจะปานนั้น



ใช้ Dynamo ในการ Query ขนาดพื้นใน Revit และส่งไป Excel

เป็นตัวอย่างของการใช้ Query ขนาดพื้น


 ใน Revit และส่ง ไป Excel โดยเอาชื่อ Floor ที่อยู่ ใน Mark ไปด้วย
ในการทำงานนี้ ต้องตั้งค่า Mode ในการ Run เป็น Manual

ผลจะไปเปิด Excel และใส่ค่า




เคล็ดลับ อยู่ที่ Element.GetParameterValueByName สามารถรับเป็น Array ได้ และจะทำทุกตัว แล้วจากนั้น ไปทำการ List.Create ใม่ ให้เป็น 2 แถว(อย่าลืมกด+) จึงไปใส่ใน Data ของ ExcelWriteToFile ช่องสี่เหลี่ยม เล็กในแต่ละ Block จะเป็นการ Debug ค่า ในการ run


วันศุกร์ที่ 11 ธันวาคม พ.ศ. 2558

ใช้ Dynamo วาด กำแพงใน Revit

เป็นมั่ว อย่างมีหลักการ โดยเริ่มจาก Objective ก่อนว่าต้องการ กำแพง แล้วก็เอา กำแพงมาวาง
แล้วดูว่า ต้องการอะไรอีก เช่น Curve (แต่อันนี้ ต้องมีความรู้ก่อนว่า Line , Arc ก็คือ Curve เหมือนกัน)
ต้องการ Level ก็เอามาวาง  ต้องการ Height ก็มาวาง ถ้าขึ้น เหลือง ก็แสดงว่าไม่ได้ ก็ใช้ ช่อง Search ลองไปเรื่อย
แล้วก็ได้กำแพงที่ปรับค่าได้


.ในการใช้ Slider ต้องตั้ง Limit ใหม่ โดยการกดที่ลูกศรลง เพื่อให้พอกับขนาดกำแพง


วันอาทิตย์ที่ 6 ธันวาคม พ.ศ. 2558

เข้าใจเขียนโปรแกรมด้วยDynamo ใน Revit เบื้องต้น

เมื่อเริ่มต้น การใช้ Dynamo ต้องลงโปรแกรมก่อน (www.dynamobim.org)เมื่อลงแล้วจะมี Icon อยู่ใน หน้าAddin

ตัวอย่างนี้เป็นต้วอย่าง เข้าใจในหลักการง่ายๆของ Dynamo มีหลักว่า ทุกอย่างจะเห็นบนจอ
Dynamo จะเป็นตัวสร้างและคำนวน Revit จะเป็นต้วแสดงผล จะสะดวกมากถ้าเครื่องคอมมี 2 จอ
จะเป็นการสร้างจุด และควบคุมจุดจาก Input ใน Dynamo

เริ่มสร้างโครงการใน Revit เลือก New Conceptual Mass

ใน หน้า Addin เลือก Dynamo

เลือก New
ทีเมนูด้านข้าง เลือก Revit->Element->Reference->Reference Point->By Point

เลือกจะแสดง Object ใน Workspace
ขณะเดียวกัน  Revit ยังไม่แสดงจุดเนื่องจากยังไม่มี Input

ตอนนี้เราก็จะได้ Element ใน การจัดการแล้ว

ไปที่ Geometry->Point->By Coordinate(X Y Z)
แล้วกดที่ Point ลาก เชื่อมไปที่ pt ของ ReferencePoint

ใน Revit จะแสดงจุดแล้ว
ใส่ Input

เลือก  Core->Input->Number Slider  3 ครั้ง
แล้ว เชื่อม แต่ละอัน เข้า X,Y,Z ของ Point

ทดลอง ปรับ ค่า X, Y , Z จาก Slider ดู จะเห็นจุดเลื่อนตำแหน่งไปมา เป็นอันสำเร็จ


 แล้ว Save โปรแกรมเก็บใว้

สรุปการควบคุมจุดจะมาจาก โปรแกรม และค่าจาก Dynamo Object




การเขียนโปรแกรม ด้วย การวาด โปรแกรม Dynamo

Dynamo พัฒนาโดยบริษัท Autodesk inc. เพื่อใช้กับ โปรแกรม Revit เป็นโปรแกรมที่ทำให้ผู้ที่ไม่ได้เรียนมาใน สาขาคอมพิวเตอร์ ทำการเขียนโปรแกรมเพื่อสร้างแบบ 3 มิติ ได้อย่างที่ต้องการโดยใช้ การกำหนด เป็น Diagram ของแนวความคิด โดยย่อก ารทำงานเป็นจุด เรียกว่า Node เมื่อต้องการทำงานอะไร ก็ให้ไปหา Node ที่ต้องการมาในการสร้างโปรแกรม และในแต่ละ Node ก็จะบอก Input และ Output เป็นรูปภาพ(ตัวอย่างจาก Tutorial Dynamo)


โดยโปรแกรมมีตัวอย่าง มากดูได้จาก Web site
http://www.dynamobim.org

ความน่าสนใจไม่ได้อยู่ที่เขียนโปรแกรม แต่ทำให้การออกแบบสถาปัตย์ ที่มีรูปแบบ Freeform หรือ Wave เป็นไปได้ใน คอมพิวเตอร์ ซึ่งแบบในลักษณะดังกล่าวยากที่สร้างเป็น Model ขึ้นมา


วันพฤหัสบดีที่ 12 พฤศจิกายน พ.ศ. 2558

Revit API 2016 กับ การเลือก Selection Object และ อ่าน Parameter

Revit API 16 มีการเปลี่ยน 2 จุดที่มีผลกระทบกับโปรแกรมเก่าๆ
ส่วนแรกคือการ Select Object ตอนนี้ จะไม่สามารถ ได้ Element โดยตรง ต้องเป็น ElementId (อันนี้ดี จะได้เป็น ระบบหน่อย)

การเลือกในปัจจุบัน


   ICollection<ElementId> collectionIds = uidoc.Selection.GetElementIds();
    List<Element> founds = new List<Element>();
                foreach (ElementId eid2 in collectionIds)
                {
                    try
                    {
                        Element e2 = doc.GetElement(eid2);
                        founds.Add(e2);
                    }
                    catch { }
                }


founds จะเป็น Array ของ Element อีกที

กรณี ต้องการ แสดง ตัวที่เลือกบนจอ เพื่อให้ Properties ทำงาน แสดงค่า Element นั้น
ต้องใช้เป็น SetElementIds( ..)

   ICollection<ElementId> sIds = uidoc.Selection.GetElementIds();
            sIds.Clear();
           sIds.Add(showElement.Id);
            uidoc.Selection.SetElementIds(sIds);


สำหรับ Parameter การอ่านค่าจะอณุญาติ ให้ 1 Parameter มี มากกว่า 1 ค่า 

  IList    <Parameter>  l4s = (Parameter)e1.GetParameters("Base Level");
ถ้ามีตัวเดียว ให้เลือก l4s.First();