Oleg

Ответы в темах

Просмотр 15 сообщений - с 1 по 15 (из 21 всего)
  • Автор
    Сообщения
  • #5551 Score: 3
    Oleg
    Участник
    28 pts

    Можете попробовать так:

    OUT=('{}'.format(i) for i in IN[0])

    #7244 Score: 3
    Oleg
    Участник
    28 pts

    Просьба поделиться командами для извлечения содержимого из Текстовых примечаний и внесения нового содержимого в имеющиеся в проекте.

    Несмотря на язык приложения, получить текст можно через python таким образом (в этом примере я получил текст, который выделил):

    А изменить выделенный текст на новый получилось таким способом:

    #7237 Score: 2
    Oleg
    Участник
    28 pts

    Можно с помощью словарика провернуть, например:

    #5553 Score: 2
    Oleg
    Участник
    28 pts

    Вы можете воспользоваться встроенной функцией пайтона – enumerate(), и тогда не нужен range

    #5514 Score: 2
    Oleg
    Участник
    28 pts

    попробуйте так:

    OUT = [str(i) for i in IN[0]]

    #5537 Score: 1
    Oleg
    Участник
    28 pts

    Тоже заметил, что если помещение сложной формы (например, Г-образные), то “цепляются” ещё и другие помещения, которые попадают в bounding box. Я фильтрую помещения через ноду GetSurroundingElements, а затем полученные помещения дополнительно проверяю на пересечения нодой Geometry.DoesIntersect. Выглядит это так (на примере поиска стен определенного типа):

     

    Решил эту проблему, возможно, несколько по-колхозному, но вроде как работает

    #6666 Score: 1
    Oleg
    Участник
    28 pts

    С нодой ReadExcel из пакета BumbleBee получилось вот так:


    и сам код, не очень красивый вышел, правда:

    #5566 Score: 1
    Oleg
    Участник
    28 pts

    тогда используйте логические операторы ‘and’ или ‘or’.

    обозначьте переменную (чтоб не писать длинные строки), например:

    name = UnwrapElement(i).Category.Name

    и потом уже

    if name == 'Стены' or name == 'Окна':

    ….

     

    #7266 Score: 1
    Oleg
    Участник
    28 pts

    Ну если нужно получить текст из нескольких элементов, то можно вот так:

     

    #5583 Score: 1
    Oleg
    Участник
    28 pts

    Вот так получилось:

    #7270 Score: 1
    Oleg
    Участник
    28 pts

    Не хватает ссылки на язык запросов 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

    Напомню, что этот скрипт для единичного выделенного текстового элемента.

    #5992 Score: 1
    Oleg
    Участник
    28 pts

    Наверное, имелось ввиду инструмент Соединить из Revit?

    Если да, то Почитайте эту тему

    Автоматизация команд из блока. Revit – Изменить – Геометрия

    #7434 Score: 1
    Oleg
    Участник
    28 pts

    /*
    * 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);
    }
    }
    }

    #6018 Score: 1
    Oleg
    Участник
    28 pts

    Осмелюсь предположить, что у вас не стоит галочка “Выбрать закрепленные элементы”

    #5450 Score: 1
    Oleg
    Участник
    28 pts

    Действительно, поторопился)

    Тогда попробуем так:

Просмотр 15 сообщений - с 1 по 15 (из 21 всего)