PDA

View Full Version : aide pour fonction sur des murs



yassineboukhabza276887
2011-07-22, 08:34 PM
Bonjour,

Actuellement je développe une fonction où je sélectionne un mur avec la méthode PickObject.
Ensuite je n'arrive pas a changer ce mur en curtain wall.
Et enfin je voudrais dessiner une ligne (ou un meneau, dsl je ne suis pas architecte) suplémentaire sur le curtain wall.

J'ai vraiment besoin d'aide, car je n'arrive pas a développer cette partie et sa me bloque pour la suite

Pierre-Nelson NAVARRA
2011-07-27, 10:01 AM
Salut!

Regarde si ça peut t'aider....
Tu peux me montrer ton code aussi si tu veux.

http://thebuildingcoder.typepad.com/blog/2010/07/change-element-type.html

yassineboukhabza276887
2011-07-28, 09:12 PM
Désolé pour le retard, je pensais que le forum envoyé un mail une fois que l'on a une réponse.
Voila mon code mais après avoir selectionner mon mur, je ne sait pas quoi faire:

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

using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Architecture;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
namespace test2011
{
[TransactionAttribute(TransactionMode.Manual)]
[RegenerationAttribute(RegenerationOption.Manual)]

public class Class1 : IExternalCommand
{
public class MySelectionFilter : ISelectionFilter
{
public bool AllowElement(Element element)
{
return element is Wall;
}
public bool AllowReference(Reference refer, XYZ point)
{
return refer.GeometryObject != null && refer.GeometryObject is Face;
}
}


public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
//Get application and document objects
UIDocument uidoc = commandData.Application.ActiveUIDocument;
try
{
while (true)
{
//Pick a Wall
Reference selRef = uidoc.Selection.PickObject(ObjectType.Element, new MySelectionFilter(), "select a room");
Element elem = selRef.Element;
Document doc = commandData.Application.ActiveUIDocument.Document;
/*
* Add code here
*/
}

}
catch (Autodesk.Revit.Exceptions.OperationCanceledException) { }
//return code
return Result.Succeeded;
}
}
}

Encore merci

Benoit D
2011-07-29, 08:18 AM
Désolé pour le retard, je pensais que le forum envoyé un mail une fois que l'on a une réponse.

Pour cela il faut s'abonner à la discussion !

yassineboukhabza276887
2011-08-10, 11:45 AM
toujours pas de réponse??? Je m'attendais a de l'avancement ou de l'aide

Pierre-Nelson NAVARRA
2011-09-01, 08:09 AM
T'es toujours bloqué mec?
Voici un bout que j'ai testé....




SelElementSet m_selection = m_application.ActiveDocument.Selection.Elements;

if (0 == m_selection.Size)
{
MessageBox.Show("Vous devez sélectionner un élément", "rvtAPI_ImageReload");
return;
}

if (1 < m_selection.Size)
{
MessageBox.Show("Vous ne devez sélectionner qu'un seul élément", "rvtAPI_ImageReload");
return;
}

// Find all wall types and their system families (or kinds)
WallType newWallType = null;
foreach (WallType wt in m_doc.WallTypes)
{
string str = wt.Name;


if (str.Contains("panneau"))
{
newWallType = wt;
continue;
}

}

m_application.ActiveDocument.BeginTransaction();

foreach (Autodesk.Revit.Element elem in m_selection)
{
Wall wall = elem as Wall;
WallType oldWallType = wall.WallType;
// change wall type and report the old/new values
wall.WallType = newWallType;
}

m_application.ActiveDocument.EndTransaction();