Programming

Avec le développement de la science et de la technologie, la programmation est devenue une compétence indispensable pour l’ingénieur. Grâce à la pensée logique, il réduit la simple répétition de l’œuvre. Il peut économiser plus de temps, de sorte que les ingénieurs se concentrent sur le problème lui-même.

(Réaliser par HTML5, CSS, JavaScript, C# et Python.)

1./ SITE PERSONNEL /

Voilà : )

2./ CREALAB PARIS /

www.crealab-design.com

Un site pour un agence d’architecture parisien. Ajouter le 3ème langue(chinois) et plein de functions nouvelles. 

Reconstruire le site totalement tout seul. : ( 

Chaque page vous pouvez trouver une partie de <div class=''copyright’’> </div> dans le “Afficher le code source de la page Web” (Bouton droit de la souris vous pouvez trouvez cette option dans la liste)

3./ Revit API/

Le Revit API (Application Programming Interface) est une ressource ouvert pour tout les développeurs dans le domain d’ingénirie. Il est un outil pour améliorer l’efficacité par l'opération par lots. Quand-même on peux ajouter quelques fonctions qu'il n'a pas existe.
(Réaliser avec Revit Extensions Software Development Toolkit (SDK) )

3.1 Filtre sur mesure

Bien que il y a un propre filtre, mais dans certains cas, il est difficile de répondre à nos besoins. Ce filtre ne peut filtrer que le type d'élément. Cela devient difficile quand nous devons choisir les éléments d'une condition particulière. Lorsque le projet est grand, il prend plus de temps.
Cet exemple sélectionne toutes les fenêtres de 1200x1500mm et avec une condition de ElementId supérieur à 5 dans un projet.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;

namespace FiltersPractise2
{
    [TransactionAttribute(TransactionMode.Manual)]
    [RegenerationAttribute(RegenerationOption.Manual)]
    public class Class1 : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            //FilterElementCollect
            UIDocument uiDoc = commandData.Application.ActiveUIDocument;
            Document doc = uiDoc.Document;
            FilteredElementCollector collector = new FilteredElementCollector(doc);

            //QuickFilter
            collector = collector.OfCategory(BuiltInCategory.OST_Windows).OfClass(typeof(FamilySymbol));

            //Condition 1200x1500mm
            var query = from element in collector
                        where element.Name == "1200 x 1500 mm"
                        select element;
            List famSyms = query.ToList();
            ElementId symbolId = famSyms[1].Id;
            FamilyInstanceFilter fiFilter = new FamilyInstanceFilter(doc, symbolId);
            FilteredElementCollector c1 = new FilteredElementCollector(doc);
            ICollection found = c1.WherePasses(fiFilter).ToElements();

            //Condition ID<5
            ElementId ruleValId = new ElementId(-1001203);
            FilterRule fr = ParameterFilterRuleFactory.CreateLessRule(ruleValId, "5", true);
            ElementParameterFilter pFilter = new ElementParameterFilter(fr);
            FilteredElementCollector c2 = new FilteredElementCollector(doc);
            c2 = c2.OfCategory(BuiltInCategory.OST_Windows).WherePasses(fiFilter).WherePasses(pFilter);

            //LogicalOrFilter
            ElementCategoryFilter doorFilter = new ElementCategoryFilter(BuiltInCategory.OST_Doors);
            ElementCategoryFilter windowFilter = new ElementCategoryFilter(BuiltInCategory.OST_Windows);
            LogicalOrFilter lFilter = new LogicalOrFilter(doorFilter, windowFilter);
            FilteredElementCollector c3 = new FilteredElementCollector(doc);
            ICollection fds = c3.OfClass(typeof(FamilyInstance)).WherePasses(lFilter).ToElements();

            //PrintOut
            TaskDialog.Show("Chercher", "Trouver les fenetres de type 1200x1500mm" + found.Count.ToString() + "\n" + "Les element qu'ils ont un ID moins 5 sont:" + c2.ToList().Count.ToString() + "\n" + "Totalement il y a" + fds.Count.ToString() + "de fenetre et porte.");
            return Result.Succeeded;
        }
    }
}

3.2 Détecteur de la collision

Lorsque le projet est complexe, la collision de divers systèmes de tuyauterie et de systèmes de construction est également importante.
Cet exemple examine la collision entre le tuyau et le mur.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.Attributes;

namespace Collision
{
    [TransactionAttribute(TransactionMode.Manual)]
    [RegenerationAttribute(RegenerationOption.Manual)]
    public class Class1 : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIDocument uiDoc = commandData.Application.ActiveUIDocument;
            Document doc = uiDoc.Document;
            Transaction trans = new Transaction(doc,"ExComm");
            trans.Start();

            Selection select = uiDoc.Selection;
            Reference r = select.PickObject(ObjectType.Element, "Choisir un mur qui a besoin de verifier");
            Element column = doc.GetElement(r);
            FilteredElementCollector collect = new FilteredElementCollector(doc);

            //Verifier collision
            ElementIntersectsElementFilter iFilter = new ElementIntersectsElementFilter(column, false);
            collect.WherePasses(iFilter);
            List excludes = new List();
            excludes.Add(column.Id);
            collect.Excluding(excludes);
            List ids = new List();
            select.SetElementIds(ids);

            foreach (Element elem in collect)
            {
                ids.Add(elem.Id);
            }
            select.SetElementIds(ids);
            trans.Commit();
            return Result.Succeeded;
        }
    }
}

3.3 Plugin interactive (Inachevé)

Je suis en train de développe un petit plugin interactive. Il permet aux utilisateurs de définir des conditions de filtre et de simplifier certaines tâches répétitives.
Cela dépend de mon temps libre et la quantité de café que je bois chaque jour : )

COPYRIGHT

© 2016 - 2017 yousheng.fr
Design & Developed by Yousheng WANG
Privacy Policy

WANG Yousheng

+33 (0)6 98 18 82 06
yousheng.wang@estp.fr

ESTP Paris

3ème année en bâtiment
Recherche un stage de TFE (à partir du 15 février 2018) dans le domain du BIM

FOLLOW ME