Communauté
BIM Revit, BIM et Autodesk Construction Cloud (ACC) - Français
Bienvenue sur le forum AEC francophone dédié aux solutions BIM de la société Autodesk. Cet espace est dédié aux professionnels et passionnés du secteur de l'Architecture, de l'Ingénierie et de la Construction (AEC) qui utilisent le logiciel Revit ainsi que les plateformes collaboratives d'Autodesk (ACC et Autodesk Forma). Partagez vos connaissances, posez des questions, collaborez sur des idées, et explorez les sujets, que vous soyez architecte, ingénieur, gestionnaire de projet ou tout autre acteur de l'AEC.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Revit : C# tracer une canalisation souple

16 RÉPONSES 16
RÉSOLU
Répondre
Message 1 sur 17
jbaussero
528 Visites, 16 Réponses

Revit : C# tracer une canalisation souple

Bonjour. 
je cherche une solution pour tracer une canalisation souple à partir des xyz selon principe ci dessous
merci bonne journée 

using (Transaction trans = new Transaction(doc))
{
	trans.Start("New Model Line");
				
	//Create plane & sketchplane
    	Plane _plane = Plane.CreateByNormalAndOrigin(XYZ.BasisZ,pnt1);
    	SketchPlane _sketchPlane = SketchPlane.Create(doc,_plane);
				
    	//create model line
	doc.Create.NewModelCurve(cu,_sketchPlane);
				            
	trans.Commit();

Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
C# tracer une canalisation souple

16 RÉPONSES 16
Message 2 sur 17
Charles.Piro
en réponse à: jbaussero

Salut,

pour créer des canalisation il faut utiliser la méthode newFlexPipe() qui contient 3 options paramétrage :

- new FlexPipe(Connector,Connector,FlexPipeType)

- new FlexPipe(Connector,IList<XYZ>,FlexPipeType)

- new FlexPipe(IList<XYZ>,FlexPipeType)

 

Dans ton cas c'est la dernière option :

FilteredElementCollector flt = new FilteredElementCollector(doc).OfClass(typeof(FlexPipeType));
FlexPipeType flexType = flt.first() as FlexPipeType;
IList<XYZ> lstPnts = new List<XYZ>();
lstPnts.add(new XYZ(0,0,0));
lstPnts.add(new XYZ(10,10,0));

FlexPipe _flexpipe = new FlexPipe(lstPnts,flexType);

😉

 



PIRO Charles
Developer

PIRO CIE
Linkedin


Message 3 sur 17
be-bj
en réponse à: Charles.Piro

Bonjour

 

Désolé, il ne connait pas :  FlexPipeType                   il manque ??

 

 

**********************************

            UIDocument uidoc = this.Application.ActiveUIDocument;
            Document doc = uidoc.Document;
            FilteredElementCollector flt = new FilteredElementCollector(doc).OfClass(typeof(FlexPipeType));
            FlexPipeType flexType = flt.first() as FlexPipeType;
            IList<XYZ> lstPnts = new List<XYZ>();
            lstPnts.add(new XYZ(0,0,0));
            lstPnts.add(new XYZ(10,10,0));

            FlexPipe _flexpipe = new FlexPipe(lstPnts,flexType);

Message 4 sur 17
Charles.Piro
en réponse à: jbaussero

Salut,

 

as-tu bien ajouté : using Revit.DB.Plumbing ?

 

😉



PIRO Charles
Developer

PIRO CIE
Linkedin


Message 5 sur 17
be-bj
en réponse à: Charles.Piro

Bonjour.

 

  désolé 

Oui, mais !!!

 

using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Mechanical;
using Autodesk.Revit.Attributes;
using System.Globalization;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using Autodesk.Revit.DB.Electrical;
using Autodesk.Revit.DB.Plumbing;
using Autodesk.Revit.DB.Architecture;

Message 6 sur 17
be-bj
en réponse à: be-bj

bonjour

 

idem dans une macro erreur pour :    first 

 

UIDocument uidoc = this.Application.ActiveUIDocument;
            Document doc = uidoc.Document;
            FilteredElementCollector flt = new FilteredElementCollector(doc).OfClass(typeof(FlexPipeType));
            FlexPipeType flexType = flt.first() as FlexPipeType;
            IList<XYZ> lstPnts = new List<XYZ>();
            lstPnts.add(new XYZ(0,0,0));
            lstPnts.add(new XYZ(10,10,0));

            FlexPipe _flexpipe = new FlexPipe(lstPnts,flexType);

Message 7 sur 17
Charles.Piro
en réponse à: jbaussero

Oups, oui petite correction :

 

doc.Create.NewFlexPipe(lstPnts,flexType);

 

Et bien sûr, ne pas oublier d'encapsuler cette création dans une transaction.

 

😉



PIRO Charles
Developer

PIRO CIE
Linkedin


Message 8 sur 17
be-bj
en réponse à: Charles.Piro

Bonjour

Désolé, mais j'ai toujours un problème d'erreur que je ne comprends pas certainement une déclaration qui manque 

Cordialement bonne journée

Message 9 sur 17
Charles.Piro
en réponse à: be-bj

Attention à bien récrire le code et non pas juste faire un copier coller afin d'avoir la bonne écriture et la bonne casse.

Exemple, First() est une méthode donc commence par une majuscule, idem pour Add() etc...

Ensuite La méthode First provient de la classe Linq qu'il faut ajouter en "using".

 

😉

 



PIRO Charles
Developer

PIRO CIE
Linkedin


Message 10 sur 17
be-bj
en réponse à: Charles.Piro

Bonjour

Désolé

Déjà mieux mais !!!

Bonne journée.

bebj_0-1677827859899.png

 

Message 11 sur 17
Charles.Piro
en réponse à: jbaussero

Je vois que vous n'avez pas compris mon message un peu plus haut. La ligne 

FlexPipe _flexpipe = new FlexPipe(lstPnts, flexType) est à remplacer par FlexPipe _flexpipe = doc.create.NewFlexPipe(lstPnts, flexType).

 

😉



PIRO Charles
Developer

PIRO CIE
Linkedin


Message 12 sur 17
be-bj
en réponse à: Charles.Piro

Bonjour

Je suis nul, mais ça fonctionne toujours pas

Cordialement bonne journée

 

bebj_0-1677831490213.png

 

 

Message 13 sur 17
Charles.Piro
en réponse à: jbaussero

Bonjour,

 

comme indiqué plus haut, il faut encapsuler la création du flexible dans une transaction !

 

using(Transaction trans = new Transaction(doc))
{
trans.Start("Create Flexible");
FlexPipe _flexpipe = doc.create.NewFlexPipe(lstPnts, FlexType);
trans.Commit();
}

 

 

😉



PIRO Charles
Developer

PIRO CIE
Linkedin


Message 14 sur 17
be-bj
en réponse à: Charles.Piro

Bonour

 

Meme problème avec la modification 

 

UIDocument uidoc = this.Application.ActiveUIDocument;
            Document doc = uidoc.Document;
            FilteredElementCollector Flt = new FilteredElementCollector(doc).OfClass(typeof(FlexPipeType));            
        
            FlexPipeType FlexType = Flt.First() as FlexPipeType;
            IList<XYZ> lstPnts = new List<XYZ>();
            lstPnts.Add(new XYZ(0,0,0));
            lstPnts.Add(new XYZ(10,10,0));
            
            
            using(Transaction trans = new Transaction(doc))
            {
                FlexPipe _flexpipe = doc.Create.NewFlexPipe(lstPnts, FlexType);
            }

Message 15 sur 17
Charles.Piro
en réponse à: jbaussero

Vous avez oublié une partie de ma réponse ! les Start et Commit de la transaction !!



PIRO Charles
Developer

PIRO CIE
Linkedin


Message 16 sur 17
be-bj
en réponse à: Charles.Piro

Bonjour

SUPER CA FONCTIONNE

Désolé pour les problèmes, merci beaucoup.

 

Bonne journée.

Message 17 sur 17
patrick.emin
en réponse à: jbaussero

Bonjour @jbaussero 

Merci d’avoir participé à notre communauté ! Vos questions et leurs réponses aident tout le monde. Si des réponses vous paraissent appropriées, voulez vous avoir l'amabilité de cliquer sur le bouton  APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report