Microsoft ออก Dotnet GDI + มานานแล้วพี่งจะลอง พบว่า สร้าง CAD ได้ง่ายมาก โดยใช้ Linq ช่วยเป็น Database พบว่า ทำให้สร้าง CAD เฉพาะงาน ได้ แต่กิน Ram พอสมควร (คิดว่าไม่มากตอนนี้ ถ้าใช้ Win10 ก็ควรจะมี 8 Gb)
วันเสาร์ที่ 5 สิงหาคม พ.ศ. 2560
วันศุกร์ที่ 4 สิงหาคม พ.ศ. 2560
ขั้นตอน ของ MEP
จะเขียนแบบ ท่อ
1. ต้อง ใช้ Template Pumping
2. ใช้ Link Revit File ที่เป็น Architech
3. กรณีต้องการ Level ให้มาด้วย ต้อง Collaborate->copy/monitor
select link -> copy ที่เส้นอีกที
4. ไปรูปแปลน View->FloorPlan เช่น footing ตั้งค่า Offset และ เขียนเส้นท่อ ถ้า
ต้องการ ขึ้น บน ก็ให้ ไปรูปด้าน
ของแบบไฟฟ้า
1. ต้องใช้ Template EE
2. Link File
3. ไป View->FloorPlan Level 1
4. เปิด System Browser (F9)
5. วาง หลอดไฟ สวิทย์ ตู้ไฟ
6. สร้าง Circuit จาก วาง Mouse ที่ หลอดไฟ จะเห็น Power กับ Switch
Swich จะเชื่อม Switch กับ หลอด Power จะสร้าง สาย กับ หลอด โดยกด Tab เป็น สีเหลี่ยม
ดูใน Sytem Browser จะมี Circuit ใหม่
กด Edit เพิ่ม สวิทย์
และจะเห็น ให้สร้าง Circuit
เลือก Panel ให้เลือก ที่ แถบ ระวัง Panel ต้อง มี Power Rating ตรงกับ หลอด และ สาย
1. ต้อง ใช้ Template Pumping
2. ใช้ Link Revit File ที่เป็น Architech
3. กรณีต้องการ Level ให้มาด้วย ต้อง Collaborate->copy/monitor
select link -> copy ที่เส้นอีกที
4. ไปรูปแปลน View->FloorPlan เช่น footing ตั้งค่า Offset และ เขียนเส้นท่อ ถ้า
ต้องการ ขึ้น บน ก็ให้ ไปรูปด้าน
ของแบบไฟฟ้า
1. ต้องใช้ Template EE
2. Link File
3. ไป View->FloorPlan Level 1
4. เปิด System Browser (F9)
5. วาง หลอดไฟ สวิทย์ ตู้ไฟ
6. สร้าง Circuit จาก วาง Mouse ที่ หลอดไฟ จะเห็น Power กับ Switch
Swich จะเชื่อม Switch กับ หลอด Power จะสร้าง สาย กับ หลอด โดยกด Tab เป็น สีเหลี่ยม
ดูใน Sytem Browser จะมี Circuit ใหม่
กด Edit เพิ่ม สวิทย์
และจะเห็น ให้สร้าง Circuit
เลือก Panel ให้เลือก ที่ แถบ ระวัง Panel ต้อง มี Power Rating ตรงกับ หลอด และ สาย
วันพฤหัสบดีที่ 27 เมษายน พ.ศ. 2560
กัน Loop ใน Autocad api
กด ESC แล้ว หลุด จากโปรแกรม
if (HostApplicationServices.Current.UserBreak())
throw new Autodesk.AutoCAD.Runtime.Exception(
ErrorStatus.UserBreak, "ESCAPE pressed");
วันพฤหัสบดีที่ 20 เมษายน พ.ศ. 2560
debug แบบ Attach Visual studio 2013 บน Win10
ในการ Debug ต้อง แก้ options ใน VS2013
"Use Managed Compatibility Mode" and is found in the Tools -> Options -> Debugging
วันศุกร์ที่ 24 มีนาคม พ.ศ. 2560
วันพฤหัสบดีที่ 16 มีนาคม พ.ศ. 2560
เช็คว่า มี Column ที่ต้องการใน SQLServer Table หรือเปล่า
ในการ Insert Record เข้าใน ตาราง ต่าง Version ต้องการ เช็กว่ามี Column หรือ เปล่าให้ใช้
SELECT name
FROM sys.columns
WHERE Name = N'anyColumn'
AND Object_ID = Object_ID(N'Temptbl')
และ Check ว่า Record Cout >0 หรือ ไม่
วันศุกร์ที่ 17 กุมภาพันธ์ พ.ศ. 2560
โปรแกรม Linq กับ SQLite DataTable queryใน Visual Studio
วิธีใช้ Linq สำหรับ การ Connect กับ SQLite ใน Visual studio
กระบวนการ
1. ใน SQLite สร้าง Database และ Table ก่อน โดยใช้ SQLiteStudio ต้องใช้ Version 2,1 เท่านั้น
2. จด ชื่อ File กับ Table ใว้
3. ใน Visual studio เปิด Project ที่ต้องการ ต่อ SQLite และให้ ไปที่ Nuget Pakage Manager
เลือก SQLite
4. ทำการแก้ App.config
reference
https://github.com/JVimes/LinqSqLiteExample
// Add
กระบวนการ
1. ใน SQLite สร้าง Database และ Table ก่อน โดยใช้ SQLiteStudio ต้องใช้ Version 2,1 เท่านั้น
2. จด ชื่อ File กับ Table ใว้
3. ใน Visual studio เปิด Project ที่ต้องการ ต่อ SQLite และให้ ไปที่ Nuget Pakage Manager
เลือก SQLite
4. ทำการแก้ App.config
ชื่อ name ต้องตรงกับ File และ ใน Connection String ต้องตรงกับ ที่เก็บใว้
<connectionStrings>
<add name="myDb1" connectionString="Data Source=|DataDirectory|c:/temp/FormSQL/FormSQL/myDb1.db"
providerName="System.Data.SQLite.EF6" />
</connectionStrings>
5. สร้าง Class สำหรับ SQLite file
using System.Data.SQLite.EF6;
using System.Data.Entity.ModelConfiguration.Conventions;
namespace FormSQL
{
class myDb1 : DbContext
{ // set database(DbContext) and table (DbSet) <class> of table
public DbSet<Customer> Customer { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}
6. สร้าง Class สำหรับ Table
namespace FormSQL
{
public class Customer
{
public string Id { get; set; }
public string NAME { get; set; }
public string SURNAME { get; set; }
public string PHONE { get; set; }
public double SALARY { get; set; }
}
}
7. สร้างโปรแกรม ทดสอบ
private void testLinq()
{
var db1 = new myDb1();
var aname = db1.Customer.Single(a => a.NAME == "MyName");
aname.SALARY = 20000;
db1.SaveChanges();
}
แล้วดูผล จะเห็นว่า ใช้ Linq เรียก หา Record ที่ Name เท่ากับ MyName และเมื่อได้ Record Data มา ก็จะทำการแก้ไข โดย ตั้งค่า SALARY ใหม่ เป็น 20000 และ สั่ง SaveChanges() เพื่อ Update
ซึ่งเท่ากับ
การ Select * from Customer where Name='MyName'
และ Update Customer set (SALARY=2000 ) Where Name='MyName'
reference
https://github.com/JVimes/LinqSqLiteExample
// Add
var db1 = new myDb1();
Customer myname= new Customer();
myname.Id="0071";
myname.NAME = "Hello";
myname.SURNAME="SSS";
myname.PHONE="1234";
myname.SALARY=100;
db1.Customer.Add(myname);
db1.Customer.Add(new Customer {
Id="009",
NAME="Hellox",
SURNAME="VA",
PHONE="293993",
SALARY=300
});
// commit
db1.SaveChanges();
// Remove
var db1 = new myDb1();
var aname = db1.Customer.Single(a => a.NAME == "Hello");
db1.Customer.Remove(aname);
db1.SaveChanges();
//Select where
var db1 = new myDb1();
var ar1 = db1.Customer.Where(a => a.SALARY > 200).ToArray();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = ar1;
dataGridView1.Refresh();
คำสั่งที่น่าสนใจ เช่น การ เปลี่ยน Datatable เป็น Array ด้วย Linq
กรณีเป็น Dictionary
คำสั่งที่น่าสนใจ เช่น การ เปลี่ยน Datatable เป็น Array ด้วย Linq
var result = dt.Rows.Cast<DataRow>()
.Select(row => row["columnname"].ToString())
.ToArray();
กรณีเป็น Dictionary
var result = dt.Rows.Cast<DataRow>()
.Select(row => new KeyValuePair<string, string>(row["BomID"].ToString(), row["ChildID"].ToString()))
.ToDictionary(x => x.Key, x => x.Value);
สมัครสมาชิก:
บทความ (Atom)




