Aller au contenu

Extension pour AutoLISP


Messages recommandés

Posté(e)

Salut,

 

Une petite bibliothèque de fonctions LISP définies en .NET :

gc-Brep

gc-GetFieDlg

gc-GetFolderDlg

gc-InputBox

gc-MessageBox

gc-Purge

gc-GetStrippedMtextString

gc-CopyToClipboard

gc-TextFromClipboard

gc-VpFreeze

gc-VpLayerOverride

gc-VpLayerRemoveAll

gc-VpThaw

gc-VpThawAll

gc-XlRead

gc-XlWrite

 

Mise à jour :

Télécharger LispExtension depuis cette page.

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

Posté(e)

Si je comprend bien, ces fonctions LISP sont destinées à être utilisées dans d'autres programmes LISP? Les fonctions que tu proposes sont-elles impossibles à programmer en LISP et est-ce la raison pour laquelle tu les as programmées en .NET?

Posté(e)

Salut,

 

Oui, il est possible avec .NET de définir des fonctions LISP qui sont reconnues par AutoCAD comme des fonctions natives.

 

Parmi les fonctions proposées ici, certaines sont impossible à programmer en LISP (Brep, GetFileDld avec choix multiple, les fonctions VpLayer) d'autres sont tellement plus simple en .NET que je les ai faites dans la foulée.

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

Posté(e)

Bonjour,

Une petite bibliothèque de fonctions LISP définies en .NET

Depuis l’annonce sur l’autre post, on peut dire que cela n’a pas trainé ;)

Bravo et merci.

Apprendre => Prendre => Rendre

Posté(e)

Bonjour à tous,

 

Merci pour cette extension, j'ai juste une question.

 

Comment lire le fichier chm sous windows, l'application se lance avec l'ouverture du fichier mais les rubriques ne sont pas là.

 

Avez-vous ce phénomène ?

 

Fabcad

Posté(e)

Si tu n'extrais pas le fichier CHM tu ne verras pas les rubriques, il faut l'extraire et ça marche, j'avais eu le même problème que toi.

Posté(e)

Merci Patrick,

 

Je l'avais dézippé mais il faut aussi avec un clic droit-propriétés cliquer sur l'option Débloquer.

 

Je ne connaissais pas cette option.

 

Bonne journée,

Posté(e)

C'est curieux, je n'ai pas eu besoin de faire ce déblocage.

Posté(e)

Salut,

 

C'est curieux, je n'ai pas eu besoin de faire ce déblocage.

Patrick, pour info sous vista au boulot je dois débloquer les fichiers d’aide (provenant d'un autre ordinateur) mais pas à mon domicile sous XP(Paramètre de sécurités ou système d’exploitation à voir..)

 

A+

Apprendre => Prendre => Rendre

Posté(e)

Parmi les fonctions proposées ici, certaines sont impossible à programmer en LISP (Brep, GetFileDld avec choix multiple, les fonctions VpLayer)

Salut

 

J'avais fait cette fonction pour un choix multiple de fichiers en lisp.

 

Par contre, tu as raison en ce qui concerne les viewports.

Lire les valeurs, ok, mais les écrire :(

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

  • 2 semaines après...
Posté(e)

Mise à jour.

gc-VpLayerOverride Accepte désormais 3 types d'arguments pour la couleur :

- entier de 1 à 255 pour un couleur de l'index

- liste de 3 entiers de 0 à 255 pour la valeur RGB (Rouge Vert Bleu)

- liste de deux chaînes pour les carnets de couleurs (NomCouleur NomCarnet)

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

  • 4 mois après...
Posté(e)

Nouvelle version :

  • amélioration de la gestion des erreurs
  • versions 18 (2010-2012) et 19 (2013-?)

 

Le ZIP contient les DLLs, une fichier d'aide (LispExtension.chm), un fichier texte (lisez-moi.txt) avec les instructions de déploiement et un fichier LISP (Autoloader.lsp) à lancer la première fois depuis AutoCAD pour charger la dll correspondant à la version courante et l'inscrire dans la base de registre pour automatiser les prochains chargements.

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

  • 2 ans après...
  • 1 an après...
Posté(e)

Salut (giles)

 

un petit problème avec LispExtension_19.dll sur Autocad Map 2016

 

si je tape la fct (command "netload" "LispExtension_19")

 

j'ai ça en retour :

 

netload Nom du fichier d'assemblage: LispExtension_19 Impossible de charger l'assemblage. Détails de l'erreur: System.IO.FileLoadException: Impossible de charger le fichier ou l'assembly 'file:///C:\Program Files\Autodesk\AutoCAD 2016\LispExtension_19.dll' ou une de ses dépendances. L'opération n'est pas prise en charge. (Exception de HRESULT : 0x80131515)

Nom de fichier : 'file:///C:\Program Files\Autodesk\AutoCAD 2016\LispExtension_19.dll' ---> System.NotSupportedException: Tentative de chargement d'un assembly à partir d'un emplacement réseau qui aurait entraîné l'utilisation de l'assembly en mode Bac à sable (sandbox) dans les versions antérieures du .NET Framework. Cette version du .NET Framework n'activant pas la stratégie CAS par défaut, ce chargement peut être dangereux. Si ce chargement n'est pas destiné à utiliser l'assembly en mode Bac à sable (sandbox), activez le commutateur loadFromRemoteSources. Pour plus d'informations, consultez http://go.microsoft.com/fwlink/?LinkId=155569.

à System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)

à System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)

à System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)

à System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)

à System.Reflection.Assembly.LoadFrom(String assemblyFile)

à Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)

à loadmgd()

 

 

ces message semblent etre lié à la securité (sandbox)?????

comment faire pour continuer à utiliser tes outils bien pratiques !!!

 

merci

 

Yethi

  • 4 mois après...
Posté(e)

Bonjour Gilles,

 

Juste pour info, j'ai un petit souci avec cette DLL.

Elle se charge et fonctionne parfaitement, mais c'est juste en quittant AutoCAD que j'ai un plantage (rapport d'erreur Autodesk).

J'utilise des licences MAP 3D 2010 et MAP 3D 2012 sous WIndows XP et Windows 7.

Le problème ne se pose que sous MAP 3D 2010 sous Windows 7 32.

Toutes mes autres combinaisons :

- MAP 2010 / XP => OK

- MAP 2012 / XP => OK

- MAP 2012 / Win7 x64 => OK

C'est pas grave car je n'ai qu'un seul poste comme ça et le problème ne se pose qu'en quittant le programme donc une fois le travail sauvegardé. Je ne sais pas non plus si c'est lié à MAP ou si c'est reproductible sous AutoCAD seul.

C'est juste pour te signaler le petit souci.

 

Olivier

Posté(e)

Merci pour le retour.

Je n'ai jamais noté ce comportement (je n'ai eu jamais non plus de config telle que celle que tu décris).

En fait, je ne me sers pas vraiment de ces extensions, je n'utilise plus le LISP que pour des petites routines écrites, en général, à la demande...

Si j'ai le temps, j'y jetterais un œil.

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

Posté(e)

bonsoir Gile

 

 

je viens de tester "gc-vplayeroverride"

 

et ca me met ca

 

Choix de l'objet: no function definition: GC-VPLAYEROVERRIDE

 

 

je l'ai bien charger avec un netload

(command-s "_NETLOAD" "LispExtension_19.dll")

 

 

 

 

 

 

 

(defun c:chcoucalFEN (/ acdoc ss ref
;;;                        name
                       new )
 (setq cav (getvar "clayer"))
 (command-s "-calque" "ch" "0" "")
 (setq typeentite (getcfg "APPDATA/TYPEENTITE"))

 (setq sfen (car (entsel "\nSELECTIONNER LA FENETRE DANS LAQUELLE FAIRE LA MODIFICATION DU CALQUE :")))
 (command-s "espaceo")
 (initget "E e S s") 
 (setq tmp (getkword
             (strcat "\nVOULEZ VOUS SELECTIONNER UNE Entité ou UNE Sous entité (E e / S s) <" typeentite "> : ")
           )
 )
 (if tmp
   (setq typeentite tmp)
 )
 (setcfg "APPDATA/TYPEENTITE" typeentite)
 (if (or (= typeentite "E") (= typeentite "e"))
   (progn (setq ent1 (car (entsel "\nSELECTIONNER UNE ENTITE GLOBALE :")))
          (setq name (vlax-get-property (vlax-ename->vla-object (cdr (assoc -1 (entget ent1)))) 'layer))
   )
   (progn (setq ent1 (car (nentsel "\nSELECTIONNER UNE SOUS-ENTITE :")))
          (setq name (vlax-get-property (vlax-ename->vla-object (cdr (assoc -1 (entget ent1)))) 'layer))
   )
 )
 (command-s "espacep")
 (setq couleurnew (acad_colordlg 1))
;;  (gc-vplayeroverride sfen name 1 nil -3) 
 (gc-vplayeroverride (car ( entsel)) "C_MUR" 1 nil 0);; pour tester
 (setvar "clayer" cav)
 (princ)
 )

 

 

 

a+

 

merci

 

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

hello Gile

 

as tu pu tester mon lisp ?

 

et pourquoi j'ai cette erreur ?

 

je pensai que ca venait du fait que la fenetre n'etait pas rectangulaire, mais non.

 

 

SELECTIONNER LA FENETRE DANS LAQUELLE FAIRE LA MODIFICATION DU CALQUE :espaceo

VOULEZ VOUS SELECTIONNER UNE Entité ou UNE Sous entité (E e / S s) <S> :

SELECTIONNER UNE SOUS-ENTITE :espacep

Choix de l'objet: no function definition: GC-VPLAYEROVERRIDE

 

 

merci

 

a+

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut,

 

Au vu du message d'erreur, le problème vient plutôt du chargement de la DLL.

Regarde bien ce que dit la ligne commande quand tu appelle NETLOAD.

 

Quant au problème de fenêtre non rectangulaire, quand tu fais :

(gc-vplayeroverride (car ( entsel)) "C_MUR" 1 nil 0);; pour tester

et et que tu sélectionnes un fenêtre non rectangulaire, (car (entsel)) retourne l'entité qui a servi à faire la fenêtre.

 

Pour sélectionner une fenêtre (rectangulaire ou pas) il vaut mieux utiliser ssget avec un filtre de sélection (et les options :S et :E si tu veux simuler entsel) :

(if (setq ss (ssget "_+.:E:S" '((0 . "VIEWPORT"))))
 (progn
   (setq viewport (ssname ss 0))
   (gc-vplayeroverride viewport ...)
 )
)

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

Posté(e)

salut Gile

 

merci

 

ca fonctionne mieux maintenant en effet

 

je devais avoir un souci de chargement de "lispextension" en effet

 

 

CHCOUCALFEN : force la couleur du calque de l'entite ou sous entite dans la fenetre

CHCOUCALFENanul : annule la couleur forcée du calque de l'entite ou sous entite dans la fenetre

 

 

Grace a Gile voici deux Lisp.

 

(command-s "_NETLOAD" "LispExtension_19.dll")


 (defun c:chcoucalFEN (/ acdoc ss ref name  new )
 (setq cav (getvar "clayer"))
 (command-s "-calque" "ch" "0" "")
 (setq typeentite (getcfg "APPDATA/TYPEENTITE"))
 (command-s "espaceo")
 (initget "E e S s") 
 (setq tmp (getkword
             (strcat "\nVOULEZ VOUS SELECTIONNER UNE Entité ou UNE Sous entité (E e / S s) <" typeentite "> : ")
           )
 )
 (if tmp
   (setq typeentite tmp)
 )
 (setcfg "APPDATA/TYPEENTITE" typeentite)
 (if (or (= typeentite "E") (= typeentite "e"))
   (progn (setq ent1 (car (entsel "\nSELECTIONNER UNE ENTITE GLOBALE :")))
          (setq name (vlax-get-property (vlax-ename->vla-object (cdr (assoc -1 (entget ent1)))) 'layer))
   )
   (progn (setq ent1 (car (nentsel "\nSELECTIONNER UNE SOUS-ENTITE :")))
          (setq name (vlax-get-property (vlax-ename->vla-object (cdr (assoc -1 (entget ent1)))) 'layer))
   )
 )
 (command-s "espacep")
 (setq couleurnew (acad_colordlg 1))
   (prompt "\nSELECTIONNER LA FENETRE DANS LAQUELLE FAIRE LA MODIFICATION DU CALQUE :")

  (if (setq ss (ssget "_+.:E:S" '((0 . "VIEWPORT"))))
 (progn
   (setq viewport (ssname ss 0))
   (gc-vplayeroverride viewport name couleurnew nil -3)
 )
) 
 (setvar "clayer" cav)
 (princ)
 )


(defun c:chcoucalFENanul (/ acdoc ss ref name  new )
 (setq cav (getvar "clayer"))
 (command-s "-calque" "ch" "0" "")
 (setq typeentite (getcfg "APPDATA/TYPEENTITE"))
 (command-s "espaceo")
 (initget "E e S s") 
 (setq tmp (getkword
             (strcat "\nVOULEZ VOUS SELECTIONNER UNE Entité ou UNE Sous entité (E e / S s) <" typeentite "> : ")
           )
 )
 (if tmp
   (setq typeentite tmp)
 )
 (setcfg "APPDATA/TYPEENTITE" typeentite)
 (if (or (= typeentite "E") (= typeentite "e"))
   (progn (setq ent1 (car (entsel "\nSELECTIONNER UNE ENTITE GLOBALE :")))
          (setq name (vlax-get-property (vlax-ename->vla-object (cdr (assoc -1 (entget ent1)))) 'layer))
   )
   (progn (setq ent1 (car (nentsel "\nSELECTIONNER UNE SOUS-ENTITE :")))
          (setq name (vlax-get-property (vlax-ename->vla-object (cdr (assoc -1 (entget ent1)))) 'layer))
   )
 )
 (command-s "espacep")
   (prompt "\nSELECTIONNER LA FENETRE DANS LAQUELLE FAIRE LA MODIFICATION DU CALQUE :")

  (if (setq ss (ssget "_+.:E:S" '((0 . "VIEWPORT"))))
 (progn
   (setq viewport (ssname ss 0))
   (gc-vplayerremoveall viewport name)
 )
) 
 (setvar "clayer" cav)
 (princ)
 )

 

a+

 

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Hello Gile

 

dans tes extensions

 

tu n'aurais pas un outils qui rend invisible une entite dans une fenetre par hazard ?

tout en la laissant visible dans l'onglet model.

 

bonne nuit

 

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

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é