Mở đầu

Bài viết hôm nay sẽ về vấn đề Reference để tạo dim cho đối tượng familyinstance xuất phát từ câu hỏi của a Thuần.Mình ghi lại đây để bác nào tạo Dim có thể tham khảo các lấy về lớp Reference tạo Dim hoặc lấy PointReference.Đừng nhầm lẫn giữa Familyinstance.location với PointReference .Hai kết quả là khác biệt và độc lập sau khi mình kiểm tra.Nếu không rành về mã các bác có thẻ tìm kiếm bên trong gói DynaMEP nhé.Tải về và sử dụng là có.

Get Reference

C#

public static Reference Reference(Element Familyinstance)
{
FamilyInstance familyInstance = (FamilyInstance)Familyinstance.InternalElement;
Options options = new Options();
options.ComputeReferences = true;
options.IncludeNonVisibleObjects = true;
var result = familyInstance.get_Geometry(options)
.OfType<Autodesk.Revit.DB.Point>()
.FirstOrDefault();
if (result == null) return null;
return result.Reference;
}
view raw ReferenceDim.cs hosted with ❤ by GitHub

Python

import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
elements = UnwrapElement(IN[0]) if isinstance(IN[0],list) else [UnwrapElement(IN[0])]
ref=[]
for element in elements:
ref.append(Reference(element))
if isinstance(IN[0], list): OUT = ref
else: OUT = ref[0]
view raw ReferenceDim.py hosted with ❤ by GitHub

Get Point Reference

public static Point PointReference(Element familyinstance)
{
FamilyInstance fam = (FamilyInstance)familyinstance.InternalElement;
Options options = new Options();
options.ComputeReferences = true;
options.IncludeNonVisibleObjects = true;
var result = fam.get_Geometry(options)
.OfType<Autodesk.Revit.DB.Point>()
.FirstOrDefault();
if (result == null) return null;
return result.Coord.ToPoint();
}
view raw PointReference.cs hosted with ❤ by GitHub

Kết quả

DimFamilyInstance

Tổng kết

Hy vọng với chia sẻ nhỏ này có thể giúp các bác thực hiện ý tưởng mong muốn của mình đúng với yêu cầu dự án, hoặc hỗ trợ vấn đề mắc phải như bài viết này.Cám ơn các bác đã ghé thăm và đọc bài trên blog của mình.

Tham Khảo

Thebuildingcoder