C# и Sharp Develop

Главная Форумы Задать вопрос C# и Sharp Develop

В этой теме 38 ответов, 7 участников, последнее обновление  txt 6 мес., 1 неделя назад.

Просмотр 15 сообщений - с 16 по 30 (из 39 всего)
  • Автор
    Сообщения
  • #4685 Score: 1

    kisli
    Участник
    15 pts

    Вот это мне нравиться, давайте дружить и решать проблемы, а не спорить у кого ботинки удобней!)

    #4694 Score: 0

    Anton
    Участник
    3 pts

    Посоветуй видео уроки или книги по sharp develop…

    По Sharp Develop ничего не подскажу.
    На самом деле посмотрел твой скрипт по созданию осей через WF. Захотелось разобраться.
    Посмотрел несколько видео по созданию форм, вот и умничаю.

    #7426 Score: 0

    txt
    Модератор
    90 pts

    Спортивный интерес,
    – кто то пишет хотя бы что-то (плагины) примитивное на C# ?
    – также интересует – такие плагины можно создавать на Питоне или все-таки C# нам в путь?

    – кто в курсях , подскажите как получить BuiltInCategory (ost) элемента в C#

    #7427 Score: 2

    Legantmar
    Хранитель
    440 pts

    плагины пишутся в основном на C#
    но есть бесплатный revit python shell

    и Legantmar ribbon

    (тебе могу подарить, за заслуги на этом форуме, добавь в скайпе)

    #7428 Score: 0

    txt
    Модератор
    90 pts

    Legantmar
    в личку написал

    #7429 Score: 0

    Oleg
    Участник
    30 pts

    Спортивный интерес,
    – кто то пишет хотя бы что-то (плагины) примитивное на C# ?

    да, стараюсь писать на шарпе в силу своих знаний и возможностей))

    #7430 Score: 0

    txt
    Модератор
    90 pts

    да, стараюсь писать на шарпе в силу своих знаний и возможностей))

    Рад слышать)

    может есть ответ или мысли по поводу

    – кто в курсях , подскажите как получить BuiltInCategory (ost) элемента в C#

    #7431 Score: 0

    Oleg
    Участник
    30 pts

    – кто в курсях , подскажите как получить BuiltInCategory (ost) элемента в C#

    Как я понял, нужно сделать так, чтобы выделяя элемент, выводилось его BuiltInCategory ?

    Набросал макрос для этого:


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

    #7432 Score: 0

    txt
    Модератор
    90 pts

    Здорово 😎

    спасибо, буду тестить .

    Oleg, будь добр, выложи полный код

    проба с ошибкой (‘ObjectType” недоступен из-за его уровня защиты):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    using Autodesk.Revit.DB;
    using Autodesk.Revit.UI;
    using Autodesk.Revit.Attributes;
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    public class Hello_world : Autodesk.Revit.UI.IExternalCommand
    {
    public Autodesk.Revit.UI.Result Execute(
    Autodesk.Revit.UI.ExternalCommandData commandData,
    ref string message,
    Autodesk.Revit.DB.ElementSet elements)
    ///public void GetBIC()
    {
    UIApplication uiapp = commandData.Application;
    Document doc = uiapp.ActiveUIDocument.Document;
    UIDocument uidoc = uiapp.ActiveUIDocument;
    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);
    ///{ Autodesk.Revit.UI.TaskDialog.Show("Title", "la la la");
    return Autodesk.Revit.UI.Result.Succeeded;
    }
    }

    #7433 Score: 0

    txt
    Модератор
    90 pts

    видимо , для использования
    UIDocument uidoc = this.ActiveUIDocument;
    Document doc = uidoc.Document;

    не хватает каких-то библиотек

    #7434 Score: 1

    Oleg
    Участник
    30 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);
    }
    }
    }

    #7435 Score: 0

    txt
    Модератор
    90 pts

    как выглядит файл манифеста для выше приведенного решения?

    я думал что приложение в любом случае должно содержать:

    [Transaction(TransactionMode.Manual)]
    public class ИМЯ КЛАССА : IExternalCommand
    {
    public Result Execute(
    ExternalCommandData commandData,
    ref string message,
    ElementSet elements)
    {

    #7436 Score: 0

    Oleg
    Участник
    30 pts

    Я же предупредил, что это макрос, запускается через Диспетчер макросов в Ревите. Удобно для отладки небольших решений, которые в дальнейшем могут вырасти в нормальное приложение

    #7437 Score: 0

    txt
    Модератор
    90 pts

    т.е. когда макрос будет отлажен его можно записать в dll (или обычно так не делается) ?

    #7438 Score: 0

    txt
    Модератор
    90 pts

    Oleg
    Спасибо тебе !)
    Получилось так

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    using Autodesk.Revit.DB;
    using Autodesk.Revit.UI;
    using Autodesk.Revit.Attributes;
    using Autodesk.Revit.ApplicationServices;
    using Autodesk.Revit.UI.Selection;

    [Transaction(TransactionMode.Manual)]
    public class swaat : IExternalCommand
    {
    public Result Execute(
    ExternalCommandData commandData,
    ref string message,
    ElementSet elements)
    {

    UIApplication rvtUiApp = commandData.Application;
    Application rvtApp = rvtUiApp.Application;
    UIDocument rvtUiDoc = rvtUiApp.ActiveUIDocument;
    Document rvtDoc = rvtUiDoc.Document;

    {

    var element = rvtDoc.GetElement(rvtUiDoc.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_);
    }

    return Result.Succeeded;

    }
    }

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

Для ответа в этой теме необходимо авторизоваться.