Mở đầu
Xin chào các bạn đã quay lại, hôm nay mình có chuyện mới để nói đây.Chẳng là được chuyển qua phòng kiến trúc ngồi gần một cô kiến trúc đang vướng vụ chuyển đổi lưới trục của Levels và Grids từ 3D sang 2D.Nguyên nhân ở đây chính là việc dim và di chuyển ảnh hưởng ở các view khác.Khi đó thì phải đổi hàng loạt 3D sang 2D thì mới có thể điều chỉnh được độc lập.Ok, vậy là có cái để làm rồi, bài này mình sẽ hướng dẫn làm với dynamo hàng loạt nhé.
Cách xử Lý
Thử lấy về view hiện hành
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Copyright(c) 2016, Dimitar Venkov | |
# @5devene, dimitar.ven@gmail.com | |
import clr | |
clr.AddReference("RevitServices") | |
import RevitServices | |
from RevitServices.Persistence import DocumentManager | |
doc = DocumentManager.Instance.CurrentDBDocument | |
clr.AddReference("RevitNodes") | |
import Revit | |
clr.ImportExtensions(Revit.Elements) | |
OUT = doc.ActiveView.ToDSType(True) |
Chuyển đổi 3D sang 2D
- Csharp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static string Convert3DTo2D(Revit.Elements.Views.View view, List<Element> GridorLevel) | |
{ | |
Document doc = DocumentManager.Instance.CurrentDBDocument; | |
View v = view.InternalElement as View; | |
TransactionManager.Instance.EnsureInTransaction(doc); | |
List<DatumPlane> planes = GridorLevel.Select(x => x.InternalElement).Cast<DatumPlane>().ToList(); | |
foreach (DatumPlane datumPlane in planes) | |
{ | |
datumPlane.SetDatumExtentType(DatumEnds.End0, v, DatumExtentType.ViewSpecific); | |
datumPlane.SetDatumExtentType(DatumEnds.End1, v, DatumExtentType.ViewSpecific); | |
} | |
TransactionManager.Instance.TransactionTaskDone(); | |
TransactionManager.Instance.ForceCloseTransaction(); | |
return "Execute"; | |
} |
- Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import clr | |
clr.AddReference('RevitAPI') | |
from Autodesk.Revit.DB import * | |
import Autodesk | |
clr.AddReference("RevitServices") | |
import RevitServices | |
from RevitServices.Persistence import DocumentManager | |
from RevitServices.Transactions import TransactionManager | |
doc = DocumentManager.Instance.CurrentDBDocument | |
uiapp = DocumentManager.Instance.CurrentUIApplication | |
app = uiapp.Application | |
a = UnwrapElement(IN[0]) | |
v = UnwrapElement(IN[1]) | |
TransactionManager.Instance.EnsureInTransaction(doc) | |
for i in a: | |
i.SetDatumExtentType(DatumEnds.End0,v, DatumExtentType.ViewSpecific) | |
i.SetDatumExtentType(DatumEnds.End1,v, DatumExtentType.ViewSpecific) | |
TransactionManager.Instance.TransactionTaskDone() | |
OUT = v |
Kết quả
Video hướng dẫn chi tiết :
Mở rộng
Vấn đề đã được xử lý nhanh chóng phải không nào, ngoài ra mình cũng có thể dùng ý tưởng này làm công cụ chuyên dụng chẳng hạn.Chúc các bạn thành công.