การ Export Revit Model ไปเป็น Unity จะใช้ เป็น ".fbx" จะอยู่ที่ R->Export
เมื่อออกเป็น File แล้ว ใน Unity จะต้อง Import เป็น Asset จึงจะนำเข้าได้ แล้วค่อยไปวางใน Model
จะอยุ่ใน Tab Asset และ Drag and Drop ไปที่ Space
ข้อสังเกตุ สีของวัตถุจะเป็น basic ถ้าต้องการ ให้มีสี ต้อง Map Meterial ใหม่
วันพุธที่ 21 มีนาคม พ.ศ. 2561
วันอาทิตย์ที่ 18 มีนาคม พ.ศ. 2561
เริ่ม Unity และ C# Mono
Unity เป็น โปรแกรมสร้าง Game ที่ support c# ใน ทั้ง Windows และ Mac
วิธีลง ง่ายมาก ไป Download ที่ Website
https://unity3d.com/get-unity/download
และติดตั้ง จะมี Mono C# มาด้วย
เปิด Unity จะบังคับ ลงทะเบียน ให้ตอบ Email ให้เรียบร้อย จะเข้าโปรแกรม
ในระบบ โปรแกรม ของ Unity จะเรียก วัตถุ เช่น บ้านโต็ะ .. เป็น Assets ทั้งหมด รวมทั้ง Action หรือ โปรแกรมด้วย
ลอง Download Funiture มาทดสอบ ใน แบบ
และ ลากวาง
สร้าง Plane
Game Object->3D Object->Plane
Game Object->Ligth
ใส่ Plane ใส่ โต็ะ เตียง ใส่ Point Light และ ลบ Direction Light(แสงอาทิตย์ ออก)
สร้าง C# Code
Asset->Create->C# script
จะได้ C#
วิธีลง ง่ายมาก ไป Download ที่ Website
https://unity3d.com/get-unity/download
และติดตั้ง จะมี Mono C# มาด้วย
เปิด Unity จะบังคับ ลงทะเบียน ให้ตอบ Email ให้เรียบร้อย จะเข้าโปรแกรม
ในระบบ โปรแกรม ของ Unity จะเรียก วัตถุ เช่น บ้านโต็ะ .. เป็น Assets ทั้งหมด รวมทั้ง Action หรือ โปรแกรมด้วย
ลอง Download Funiture มาทดสอบ ใน แบบ
และ ลากวาง
สร้าง Plane
Game Object->3D Object->Plane
Game Object->Ligth
ใส่ Plane ใส่ โต็ะ เตียง ใส่ Point Light และ ลบ Direction Light(แสงอาทิตย์ ออก)
สร้าง C# Code
Asset->Create->C# script
จะได้ C#
กด Double Click (จะทำ ปิดเปิด ไฟ)
แก้ Code
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour {
public Light myLight;
void Update () {
if (Input.GetKey ("space")) {
myLight.enabled = true;
} else {
myLight.enabled = false;
}
}
}
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour {
public Light myLight;
void Update () {
if (Input.GetKey ("space")) {
myLight.enabled = true;
} else {
myLight.enabled = false;
}
}
}
ทำการ Save
แล้ว ลาก ไปวางที่ Point Light
ที่ Inspector(หรือ Property จะแสดงค่า)
กดที่ จุด หลัง My Light ของ New Behaviour Script และ เลือก Point Light
กดที่ Game Tab และกด Play (ลุกศร)
และกด แคร่ Space bar ไฟจะปิดเปิด
วันอาทิตย์ที่ 25 กุมภาพันธ์ พ.ศ. 2561
Google map บน Winform ด้วย Webbrowser control
Google Map จะแสดงบน WebBrowser Control ของ c# ใน windows 7-10 ไม่ได้ ต้องแก้ที่ meta tag
ใน Html ที่จะแสดง googlemap
ใน Html ที่จะแสดง googlemap
<!DOCTYPE html>
<html>
<head>
/**** บรรทัดนี้ ******/
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
วันจันทร์ที่ 4 ธันวาคม พ.ศ. 2560
การแสดงค่า ใน List Box ใช้Dictionary เป็น Datasource
การใช้ ListBox Datasource เพื่อความง่ายใช้ Dictionary ในการเลือก TitleBox สำหรับ Sheet ใน Revit
FilteredElementCollector collector = new FilteredElementCollector(doc);
collector.OfCategory(BuiltInCategory.OST_TitleBlocks);
collector.WhereElementIsElementType();
//Get ElementId of first title block type.
Dictionary<string,ElementId> datas =
collection.AsEnumerable().ToDictionary(x=>x.ToString(),y=>y);
listBox1.DataSource = new BindingSource(datas, null);
listBox1.DisplayMember = "Value";
listBox1.ValueMember = "Key";
เมื่อเลือก ที่ Selection
จะเป็น SelectedValue แต่ต้อง ใช้ เป็น
ElementId id =SelectedValue as ElementId;
วันจันทร์ที่ 27 พฤศจิกายน พ.ศ. 2560
การจับเวลาใน การทำงาน คำนวนหรือ ทดสอบอัลกอริกทึม
ปัญหาของการทำงาน Data ขนาดใหญ่ อาจจะเกิด ปัญหา ของ การคำนวน ใช้เวลา แบบ 2ยกกำลัง n ตามจำนวน Data ได้ บางครั้ง เพื่อต้องการ ทดสอบจับเวลา ใช้ DateTime และ TimeSpan ใน Dotnet
ในกรณีดูเวลา ใช้ เวลาวินาทีของ วัน(เราคงไม่ทำข้ามวัน)
ในกรณีดูเวลา ใช้ เวลาวินาทีของ วัน(เราคงไม่ทำข้ามวัน)
logMsg("End at:"+DateTime.Now.TimeOfDay.TotalSeconds.ToString("0.##"));
กรณี ดู เริ่มและสิ้นสุด
// start timer
DateTime sttime = DateTime.Now;
doComputingHere();
DateTime endTime = DateTime.Now;
string diff = ((endTime - sttime).TotalSeconds).ToString("0.##");
logMsg("Run time(s):" + diff);
วันอาทิตย์ที่ 12 พฤศจิกายน พ.ศ. 2560
Revit เลือกวัตถุ 2 ครั้ง PickObject
ทดลอง Print Id ของ Object ที่เลือก 2 ครั้ง ใช้ PickObject แต่ uiDoc.Selection -> ตัวแปร r ใน วงเล็บ จะเป็นคนละตัว
public static void test2Pick(ExternalCommandData commandData)
{
UIApplication uiApp = commandData.Application;
UIDocument uiDoc = uiApp.ActiveUIDocument;
var app = uiApp.Application;
Document doc = uiDoc.Document;
ElementId id1=null;
ElementId id2=null;
string str = "2 Id=";
// Select something to use as base bounding box.
{
Reference r = uiDoc.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element);
id1 = r.ElementId;
str += id1.ToString()+"\n";
}
{
Reference r = uiDoc.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element);
id2 = r.ElementId;
str += id2.ToString();
}
MessageBox.Show(str);
}
แสดง Family ทั้งหมดใน Project File
เป็นการใช้ FilteredElementCollector .OfClass จะค้นอะไรให้ทำตรงนี้
public static void listAllFamilies(ExternalCommandData cmd)
{
UIApplication uiapp = cmd.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Autodesk.Revit.ApplicationServices.Application app = uiapp.Application;
Autodesk.Revit.DB.Document doc = uidoc.Document;
FilteredElementCollector collector = new FilteredElementCollector(doc).OfClass(typeof(Family));
string str = "";
foreach (var item in collector)
{
str+=item.Name+"\n";
}
TaskDialog.Show("??",str);
}
สมัครสมาชิก:
บทความ (Atom)







