วันศุกร์ที่ 20 มีนาคม พ.ศ. 2563

สร้าง Node C# ใน Revit Dynamo โดยใช้ ZeroTouch

Dynamo เป็น การ Custom โปรแกรม Revit โดยใช้ Graphic Drag and Drop  โดยที่แต่ละ คำสั่งจะเป็น รูป Block ของคำสั่ง มีคนเขียน โปรแกรม เพื่อให้ Revit ทำงาน ได้ หลากหลาย มาก แต่บางอย่าง ก็ยุ่งยยาก เนื่องจาก ไม่ใช้ Program Language
การ เชื่อม Node ของ Dynamo จึงทำให้งานบางอย่างง่ายขึ้น เช่น การ Filter String Data  ที่ซับซ้อนโดยใช้ Rex หรือเชื่อมกับโปรแกรมระบบอื่นๆ
การ Custom Node ด้วย C# เคยเขียนใว้แล้วใน บทความ. https://thaibimpro.blogspot.com/2015/12/node-c-dynamo.html
ปัจจุบัน ง่ายกว่าเดิม โดยใข้ Tools ใน Visual Studio
วิธีการ
ให้ทำการ สร้าง New Project -> Class library ซึ่งจะเป็นชื่อใน Menu หมวด ของ Dynamo
เช่น. DynamoOk
จากนั้นไปที่ Tools->Nuget Package Manager->Browse-> พิมพ์ ZeroTouch จะเจอ
DynamoVisualProgramming.ZeroTouch
ติดตั้งลงใน Project ปัจจุบัน
แก้ Code สร้าง Class ตามต้องการ โดยกำหนด Namespace เป็น 2 ช่วงเช่น
<ชื่อหลัก>.<ชื่อหมวดงาน>
และ Method จะต่อ จาก <ชื่อหมวดงาน>


namespace PowerPartners.DynamoOk
{
    public static class FirstContact
    {
        public static string HelloWorld(string str)
        {
            string s = "Hello World " + str;
            return s;
        }
    }
}
Compile และ ใน Revit,Dyanamo ให้ กด add->import library จะได้ เมนู และ มี ชื่อตามรูป



เมื่อ Drag มา และทดลองใส่ String


แต่ เมนูนี้ จะหายไปเมื่อเข้าใหม่ ถ้าต้องการ ให้มันอยู่ ต้อง Register  UUID ของโปรแกรม และ สร้าง Json package ใว้ใน Dynamo Core

** note การ Set Debug ใน Visual Studio
Tools > Options… > Debugging > General > Check “Use Managed Compatibility Mode


วันพุธที่ 11 มีนาคม พ.ศ. 2563

Autocad load dotnet application ไม่ได้ จาก Network Drive

Window 10 มี Security เพิ่ม โดยไม่ให้ application เช่น Autocad ที่ ทำงานอยู่ netload โปรแกรมจาก Network Drive หรือ URL บางระบบ Domain จะ Load โปรแกรมไม่ได้ แม้แต่ Drive C:
วิธีแก้ ต้องไปเพิ่ม ข้อความนี้ ใน acad.exe.config ใน c:\program files\Autodesk\Autocad 20xx\

<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/> </runtime>
...

วันอังคารที่ 10 มีนาคม พ.ศ. 2563

วิธี Debug C# Autocad dotnet ด้วย Visual Studio 2015-2017

การ Debug โปรแกรม C# ที่เขียนสำหรับ Autocad 2013-2x ด้วย Visual Studio 2015-19ทำได้ แต่ลึกลับ พอสมควร และมี ข้อจำกัด เนื่องจาก เขาไม่ต้องการให้ Debug ใน Process ของ Acad.exe ง่ายๆไม่ให้ Hack

วิธีการ
1. ต้องไปที่ Project ที่ ทำอยู่. Property Setting-> set เป็น Debug
2. Setting->start External program ให้เป็น c:\program files\Autodesk\Autocad xxxx\acad.exe
 Setting ->debug ไป เช็กที่ Enable Native Code Debugging
3. Tools->Options->Debugging
    เช็ก เอาออก Enable UI Debugging tools for XAML และ Edit and Continue
    เช็ก Managed Compatibility Mode

ReBuild all
และ กด F5 จะ run Autocad และ netload โปรแกรมใน ..\Debug\<program>.dll ก็จะเข้า Debug โปรแกรมที่ทำอยู่