Aller au contenu

Messages recommandés

Posté(e)

Salut,

 

 

TEST INTERROMPU, merci.

 

 

Encore une fois, j'aurais besoin de quelque bonne âme qui voudrait bien se livrer à un petit test.

 

 

Il s'agit de tester si un programme .NET écrit en F# fonctionne sur un poste qui n'a pas de module F# installé.

 

Il faut donc que le .NET Framework 4.0 (qui contient ce module) ne soit pas installé sur le poste, donc pas AutoCAD 2012 (qui l'installe automatiquement).

 

 

Procédure :

 

 

- Télécharger FsharpTest.zip

 

- Placer les fichiers Fsharp.Core.dll (le module F#) et FsharpTest.dll (le programme) dans deux dossier différents

 

- Netloader FsharpTest.dll dans AutoCAD

 

- Insérer quelques blocs dans un fichier vierge

 

- Lancer la commande SSBN et entrer le nom d'un bloc inséré : toutes les références de ce bloc devraient être sélectionnées (même les référence de blocs dynamiques anonymes).

 

 

Si ça ne fonctionne pas (ce qui est probable), un message d'erreur sera affiché en ligne de commande.

 

Dans ce cas, mettre le fichier Fsharp.Core.dll dans le même dossier que le fichier FsharpTest.dll et refaire le test.

 

 

Si ça ne marche toujours pas, essayer en mettant Fsharp.Core.dll dans un répertoire des chemins de recherche et refaire le test.

 

 

Si ça ne marche toujours pas, c'est qu'il faut installer F# ou le .NET Framework 4.0 ou AutoCAD 2012 pour pouvoir utiliser les programmes utilisant F#...

 

 

Le code pour ceux que ça intéresse :

 

module Module1

open System
open Autodesk.AutoCAD.DatabaseServices
open Autodesk.AutoCAD.EditorInput
open Autodesk.AutoCAD.Runtime

type AcAp = Autodesk.AutoCAD.ApplicationServices.Application
   
let GetBlockReferences (db : Database) (bName : string) =
   use tr = db.TransactionManager.StartTransaction()
   let bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) :?> BlockTable
   if bt.Has(bName) then
       let btr = tr.GetObject(bt.[bName], OpenMode.ForRead) :?> BlockTableRecord
       btr.GetAnonymousBlockIds() 
       |> Seq.cast<_>
       |> Seq.map (fun id -> tr.GetObject(id, OpenMode.ForRead) :?> BlockTableRecord)
       |> Seq.append (Seq.singleton btr) 
       |> Seq.collect (fun b -> 
           b.GetBlockReferenceIds(true, false)
           |> Seq.cast<_>
           |> Seq.filter (fun id -> 
               let br = tr.GetObject(id, OpenMode.ForRead)
               let owner = tr.GetObject(br.OwnerId, OpenMode.ForRead) :?> BlockTableRecord
               owner.IsLayout))
       |> Seq.toArray
   else Array.empty
   
[<CommandMethod("ssbn")>]
let test() =
   let doc = AcAp.DocumentManager.MdiActiveDocument
   let ed = doc.Editor
   let pr = ed.GetString("\nNom du bloc:")
   if pr.Status = PromptStatus.OK then
       try
           ed.SetImpliedSelection(GetBlockReferences doc.Database pr.StringResult)
       with
           |ex -> ed.WriteMessage("\n{0}", ex.Message)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

hello gile

 

tester effectuer

 

il a bien fallu declarer un dossier a autocad pour qu'il trouve le fsharptest.dll

quand meme

 

dossier séparés

meme dossier

 

et dossier connu depuis longtemps par autocad 2011

 

 Commande: ssbn
Commande inconnue "SSBN".  Appuyez sur F1 pour obtenir de l'aide.

et ca avec les trois methodes

 

 

a+

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Merci à vous d'avoir essayé.

 

Je n'ai pas été clair, voici quelques précisions :

 

Le Framework .NET est automatiquement installé avec AutoCAD depuis la version 2006, mais suivant les versions d'AutoCAD (ou de Windows), c'est une version différente du framework qui est installée :

 

AutoCAD :

2006 / 2007 /2008 / 2009 Framework 2.0

2010 / 2011 Framework 3.5

2012 Framework 4.0

 

Windows Vista et 7 -> Framework 3.5

 

La version 4.0 du NET est la dernière version, elle n'est installée automatiquement qu'avec AutoCAD 2012 (ou Visual Studio 2010) et c'est la seule à contenir le module F#.

 

Pour vérifier, regarder dans C:\Windows\Microsoft.NET\Framework qui contient un répertoire par version du Framework installé sur le poste.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Au temps pour moi, je viens de voir qu'il faut installer le runtime F# pour faire fonctionner les application F# (même si le Framework 4 est installé).

 

Merci pour les test et désolé pour le dérangement, il faut que je revoie ma copie.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Tu nous a pas du tout dérangé

 

au contraire, je pense que nous sommes contants et fiers de participer a tes expériences

 

elles sont toujours instructives et intéressantes.

 

Je te souhaite bon courage avec le F sharp

cela m'a l'air génial mais super compliqué

 

:o

Posté(e)

Bon,

 

Pour pouvoir exécuter des programmes F# sur un poste où n'est pas installé Visual F#, il faut installer le 'runtime F#'.

 

Le fichier fsharp_redist.exe qui installe ce runtime est téléchargeable ici.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Cette fois avec le runtime installé :

1- test avec les fichiers dans deux dossiers différents.

Après l'entrée du nom du bloc il retourne : eWasErased

 

2- test avec les fichiers dans le meme dossier.

il retourne : eWasErased

 

3- avec Fsharp.Core.dll dans dossier support :

-> : eWasErased

 

Si ca peut faire avancer le schmilblick... :)

Posté(e)

Merci,

 

Si le runtime est installé, il n'y a plus à se préoccuper du fichier Fsharp.Core.dll.

En fait, ce que je voulais essayer c'est d'éviter l'installation du runtime uniquement en fournissant ce fichier, il s'avère que ce n'est pas suffisant.

 

Maintenant, concernant l'erreur que tu as, je ne sais pas quoi dire. eWasErased signifie que le programme esssaye d'accéder à un objet qui a été effacé.

Je n'arrive pas à reproduire cette erreur.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bon,

 

Avec MAP2009 sur Windows XP SP2

 

Choux blanc avec les différentes étapes du tuto du post d'original

ssbn Commande inconnue "SSBN".

 

Pour fsharp_redist.exe je n'ai pas les droits d'admin pour l'installer et en plus j'ai vue que le SP3 était requis, donc...

 

Avec cette config, ma contribution s'arrête ici.

 

Peut être chez moi, si j'ai un petit moment.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité