首页/技术分享

设置Revit图纸中视口标题位置-Rhino.Inside

发布于:2024-10-10 09:54:40
19人 分享

Hello大家好!我是九哥~

今天给大家分享一个实用的API,设置图纸中视口标签的位置。

很早之前,我在视频号里分享过根据Excel创建图纸目录,并快速布图的Dynamo程序,不过有一个小遗憾,就是标签的位置,无法设置。

不过现在好了,Revit2022+版本,增加了视口的标签偏移的属性,并且是可get可set的,正好能满足我们的需求。

image.png

那么就和简单了,只需要在放置视口后,同时调整视口标签偏移即可。

核心代码如下:

view.LabelOffset = DB.XYZ(x,y,z)

大致偏移逻辑如下图,funbim标签需要向右下方移动,x值为正,y值为负即可:

image.png

是不是很简单,这里需要注意的就是,Revit默认是以英尺为单位的,需要进行转换,同时Revit2022版本的单位API也进行了调整,需要注意。

这里,我们也可以存成一个固定的用法,生成一个换算系数。

if int(REVIT_VERSION) < 2021:
    units = doc.GetUnits().GetFormatOptions(DB.UnitType.UT_Length).DisplayUnits
    factor = DB.UnitUtils.ConvertToInternalUnits(1,units)
else:
    factor = DB.UnitUtils.ConvertToInternalUnits(1,doc.GetUnits().GetFormatOptions(DB.SpecTypeId.Length).GetUnitTypeId())

最后附上完整代码和程序演示截图:

调整好位置值以后,点击Button即可运行,实现视口标题位置的调整。

image.png

# RIR设置图纸中视口标签的位置
__author__ = '九哥BIMer'

import clr
clr.AddReference('System.Core')
clr.AddReference('RhinoInside.Revit')
clr.AddReference('RevitAPI') 
clr.AddReference('RevitAPIUI')

from System import Enum

import rhinoscriptsyntax as rs
import Rhino
import RhinoInside
import Grasshopper
from Grasshopper.Kernel import GH_RuntimeMessageLevel as RML
from RhinoInside.Revit import Revit, Convert
from Autodesk.Revit import DB
#from Autodesk.Revit.DB import *

REVIT_VERSION = Revit.ActiveUIApplication.Application.VersionNumber

doc = Revit.ActiveDBDocument

if int(REVIT_VERSION) < 2021:
    units = doc.GetUnits().GetFormatOptions(DB.UnitType.UT_Length).DisplayUnits
    factor = DB.UnitUtils.ConvertToInternalUnits(1,units)
else:
    factor = DB.UnitUtils.ConvertToInternalUnits(1,doc.GetUnits().GetFormatOptions(DB.SpecTypeId.Length).GetUnitTypeId())

if GO == 1:
    t1 = DB.Transaction(doc, "视图标签偏移")
    t1.Start()
    labelOffset = DB.XYZ(XOffset*factor,YOffest*factor,0.0)
    view.LabelOffset = labelOffset
    t1.Commit()

        好了,今天的分享就到这里了




转载请注明来源本文地址:https://www.tuituisoft/blog/23043.html

上一篇:

政策新闻 | 住建部部长答记者问 回应房地产发展、城市更新、建筑业转型升级等社会热点问题

下一篇:

政策新闻 | 聊城市住建局局长杨延星同志带队到体育公园房交会调研并召开会议