Oleg
Ответы в темах
-
АвторСообщения
-
Просьба поделиться командами для извлечения содержимого из Текстовых примечаний и внесения нового содержимого в имеющиеся в проекте.
Несмотря на язык приложения, получить текст можно через python таким образом (в этом примере я получил текст, который выделил):
А изменить выделенный текст на новый получилось таким способом:
Не хватает ссылки на язык запросов LINQ. Попробуйте так:
import clr
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
import System
clr.AddReference("System.Core")
clr.ImportExtensions(System.Linq)
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
# Start Transaction
TransactionManager.Instance.EnsureInTransaction(doc)
elId = uidoc.Selection.GetElementIds();
el = (doc.GetElement(elId.FirstOrDefault()))
newText = "Примечание"
el.Text = newText
# End Transaction
TransactionManager.Instance.TransactionTaskDone()
OUT = el.Text
Напомню, что этот скрипт для единичного выделенного текстового элемента.
Наверное, имелось ввиду инструмент Соединить из Revit?
Если да, то Почитайте эту тему
/*
* Created by SharpDevelop.
* User: Oleg
* Date: 03.02.2018
* Time: 9:54
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;
namespace test
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.DB.Macros.AddInId("23D2EA92-8C3D-4105-8EC6-7C75A84F4358")]
public partial class ThisApplication
{
private void Module_Startup(object sender, EventArgs e)
{
}
private void Module_Shutdown(object sender, EventArgs e)
{
}
#region Revit Macros generated code
private void InternalStartup()
{
this.Startup += new System.EventHandler(Module_Startup);
this.Shutdown += new System.EventHandler(Module_Shutdown);
}
#endregion
public void GetBIC()
{
UIDocument uidoc = this.ActiveUIDocument;
Document doc = uidoc.Document;
var element = doc.GetElement(uidoc.Selection.PickObject(ObjectType.Element, "Выберите элемент"));
string message = "";
var e = element.Category.Id.IntegerValue;
foreach (var bic in Enum.GetValues(typeof(BuiltInCategory))) {
if (e==(int)bic)
{
message = bic.ToString();
}
};
TaskDialog.Show("Bic", message);
}
}
}
Откуда в итоговом списке взялся диапазон 8-30? И почему нет единички в единственном числе?
Потому что в списке остаются только уникальные значения, без дубликатов. Цифра “1” отсутствует в единственном числе, поскольку в списке есть ещё значения 2,3,4, которые и объединяются в запись “1-4”. С значениями 8-30 та же история. В списке присутствовали значения “8, 9, 10, “10..30”, что дает в короткой записи “8-30”
-
АвторСообщения