Overblog
Suivre ce blog Administration + Créer mon blog
3 juillet 2012 2 03 /07 /juillet /2012 17:13

Dans l'article précédent, nous avons vu que le benchmark ne s'exécute peut être pas convenablement, ce qui altère les résultats.

La solution est peut être de désactiver les effets visuels, comme le préconise Art Liddle.

Désactiver aéro

Dans le panneau de configuration, il faut retourner à information et outils de performance, à gauche « effets visuel » dans la fenêtre, cocher Ajuster afin d’obtenir les meilleures performances, appliquer, et vous obtenez ça :

 

image006

 

C’est sûr que ça calme tout de suite ! Passer du bureau aéro à NT4, bonjour le flashback !

Maintenant, on va voir si ça a un effet concret :

Je lance le 1er Bench, avec la version 2012, et là, miracle, je peux assister au grand spectacle visuel concocté par Art Liddle, jusqu’au bout et avec une vitesse spectaculaire !

Je lance le 2eme Bench, avec Autocad 2013, je vois une bonne partie du spectacle se dérouler, puis l’écran se fige a mis parcours, donc le test ne sera pas significatif.

J’essaye maintenant avec la 2011, et le drver Nvidia hdi : le test plante dès la 1ère séquence !

J’essaye de relancer avec le driver Autocad HDI, mais là, Autocad 2011 plante dès que j’essaye de changer de driver ! pas moyen de revenir en arrière, nous ne saurons plus rien de la version 2011

On va maintenant voir si ça change les performances :

AutoCAD version          

 18.1s

2011

 18.2s

2012

19.0s

2013

 

test impossible

Testé avec succès

Test interrompu

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

 

 

 

 

 

 

C2012 Total Index  

 

 

306

 

282

 

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

 

 

 

 

 

 

3D Graphics Index  

 

 

604

 

464

 

2D Graphics Index  

 

 

255

 

259

 

Disk Index         

 

 

198

 

179

 

CPU Index           

 

 

166

 

228

 

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

 

 

 

 

 

 

(Single Loop Time  

 

 

16

minutes

18

minutes

 

Conclusion

 

Le driver performance Nvidia donne de très bon résultat tout en permettant de travailler avec le confort visuel de l’environnement aéro de Windows Seven.

Avec 2012 et 2013, lorsque l’on veut travailler en 3d, ou sur des plans 2d très volumineux, il vaut mieux désactiver aéro. Finalement c’est rapide, et ça ne demande pas de relancer la machine.

Par contre ça demande un vrai travail d’adaptation, car j’ai un peu de mal avec cette vieille interface.

Avec la 2012, on a des performances vraiment intéressantes de cette manière.

Pour ce qui est des valeurs retournées par le Benchmark, on ne peut pas trop s’y fier, par contre on peut se faire une idée assez précise en observant le déroulement du test.

En mettant l’écran dans votre champ de vision, vous pouvez travailler car dès que l’animation s’arrête, vous le remarquez.

 

Maintenant, il ne reste plus qu'a prier pour qu' Nvidia sorte un nouveau driver performance pour Autocad 2013 !

 

 

Cadalyst Benchmark ©Copyright 2012 Art Liddle and Cadalyst. You may freely use the Cadalyst Systems Benchmark and/or modify it for personal use only. This benchmark test (including all files) may not be copied, modified, or distributed for commercial purposes without the written consent of the copyright holders. Test results may not be published for commercial purposes without the written consent of the copyright holders.

 

Le Blog de G-eaux n’est pas rémunéré par de la publicité.

 

g-eaux

 

Partager cet article
Repost0
3 juillet 2012 2 03 /07 /juillet /2012 17:05

Benchmark Cadalyst : Test  avec Autocad 2011, 2012 et 2013,  premiers résultats.

Dans un autre billet , je vous ai présenté le benchmark cadalyst, que j’ai adapté aux versions internationales.

Je n’avais pas eu à l’époque de temps pour faire des tests poussés, puisqu’on ne peut pas faire de Benchmark lorsque l’on travaille sur une machine.

Mais là, je viens de recevoir un nouveau poste de travail,  que je n’ai pas eu le temps de configurer, et qui a donc l’intérêt d’être tout neuf dans sa configuration d’usine, l’idéal pour faire des tests.

J’ai également reçu Autocad 2013, donc faire un test comparatif s’avère intéressant.

 

Problématique

Un petit tour sur le site de Cadalyst pour se rendre compte qu’aucune version pour la 2013 n’a été postée, mais ce n’est pas grave, le benchmark 2012 marche avec Autocad 2011 à 2013.

Ce qui nous pousse à utiliser un Benchmark pour Autocad,  c’est la déception de voir une machine puissante, équipée d’une carte Quadro, ramer comme un vieux 486, dès qu’on veut afficher un peu de 3d.

Dans encore un autre billet  , j’ai présenté une astuce pour installer le dernier Performance Driver Nvidia, avec lequel on a de très bons résultats, mais malheureusement, Nvidia s’est arrêté  à Autocad 2011.

Donc on aimerait bien savoir comment retrouver ces performances avec Autocad 2012 et 2013.

Un autre mystère…

Dans mes tests de février, j’avais été surpris de trouver 2012 beaucoup plus rapide que 2011 … je voulais en avoir le cœur net.

Limitations :

Les tests n’ont été effectués que dans l’environnement windows seven 64.

Le Benchmark Cadalyst

Je l’avais internationalisé sans trop comprendre son fonctionnement, et j’avais lu les infos en diagonale.

On peut faire autant de tests que l’on veut sans devoir effacer de fichiers, et les résultats s’empilent dans le fichier C2012_data.dta.

Il faut donc veiller à bien remplir les commentaires pour pouvoir comparer.

La taille de la fenêtre a-t-elle une importance ?

J’ai fait mes 1ers tests avec un Autocad réduit. J’ai voulu savoir si cela avait un impact, et j’ai donc refait le même test avec 2 tailles différentes, il semble qu’il y ait un léger impact, donc il vaut mieux maximiser la fenêtre Autocad

Méthodologie.

J’ai essayé de faire les tests progressivement, en changeant les paramètres un à un, et en reproduisant le test avec les 3 dernières versions d’Autocad.

Dès le départ, j’ai pris soin de désactiver la dégradation adaptive, comme le préconise Art Liddle, par contre, je n’ai pas tout de suite modifié la configuration aéro de Windows, car pour moi, c’était un non-sens de faire des tests dans une configuration que je n’utiliserai pas au travail. Je pense que j’ai mal traduis ses propos : « Best results » ne voulait pas dire  « meilleurs quantitativement » mais « meilleurs qualitativement »

Avant tout, un petit tour par le Benchmark Windows :

Je commence par regarder quel driver Nvidia est livré, il s’agit du 261.30, c’est un pilote certifié Autodesk, un peu ancien. C’est avec lui que l’on fera les premiers tests.

Sous Windows, les performances graphiques sont à 6.9.

C’est également à cet endroit que l’on trouve l’option « Ajuster les effets visuel », que l’on ira changer tout à l’heure.

 

 

 

image002.png

Premier test: Configuration d'origine, Windows aéro activé, accélération matérielle Autocad désactivée

         

OS Platform              

 Microsoft Windows NT Version 6.1 (x64)

Graphics Window size     

 1055x699 pixels

   

Test Date (Time)         

 06-20-12 (3

     

Computer Brand           

 HP Z400

     

CPU Type                 

 Xéon 3ghz

     

System RAM               

 12 go

     

Graphics Card            

 Quadro 2000

   

Graphics Card driver     

261,3

     

Number of Test Loops     

1

     

Comment                  

 Configuration d'origine, Windows aéro activé, accélération matérielle Autocad désactivée

         
         

AutoCAD version          

 18.2s

2012

19.0s

2013

 

 

 

 

 

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

 

 

 

 

C2012 Total Index  

200

 

188

 

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

 

 

 

 

3D Graphics Index  

52

 

51

 

2D Graphics Index  

306

 

271

 

Disk Index         

202

 

186

 

CPU Index          

240

 

247

 

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

 

 

 

 

(Single Loop Time  

72

minutes

73

minutes

 

On est donc dans des temps très long, et on ne voit que très peu de différence entre 2012 et 2013, peut-être même est-ce dû à la taille de Graphics Window size, qui n’était pas la même dans les 2 tests.

 

Deuxième test:   Windows aéro activé, accélération matérielle Autocad activée

   
             

OS Platform              

 Microsoft Windows NT Version 6.1 (x64)

   
             

Graphics Window size     

 1676x760 pixels

       

Test Date (Time)         

 06-20-12 (4

         

Computer Brand           

 HP Z400

         

CPU Type                 

 Xéon 3ghz

         

System RAM               

 12 go

         

Graphics Card            

 Quadro 2000

       

Graphics Card driver     

261,3

pour Autocad 2012 ert 2013

276,42

pour A2011

Number of Test Loops     

1

         

Comment                  

 Configuration d'origine, Windows aéro activé, accélération matérielle Autocad désactivée

   
             
             

AutoCAD version          

 18.1s

2011

 18.2s

2012

19.0s

2013

 

 

 

 

 

 

 

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

 

 

 

 

 

 

C2012 Total Index  

351

 

344

 

334

 

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

 

 

 

 

 

 

3D Graphics Index  

744

 

621

 

619

 

2D Graphics Index  

226

 

307

 

273

 

Disk Index         

200

 

204

 

183

 

CPU Index          

234

 

243

 

260

 

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

 

 

 

 

 

 

(Single Loop Time  

15

minutes

14

minutes

15

minutes

 

Premier tests avec les 3 versions, malheureusement, j’avais déjà changé de driver WHQL pour le test avec la 2011. On remarque que seules les performances 3d on vraiment changé, et que d’un test à l’autre, la version 2012 reste de loin la plus rapide pour l’affichage 2d. C’est ce que j’utilise le plus, alors c’est quand même intéressant …

Au passage, le nouveau driver 276.42 donne un niveau de performance de 7.0 dans le benchmark Windows, soit une amélioration de 1.5 % …

Et si on essayait de modifier les paramètres du driver ?

Le driver Nvidia a beaucoup de paramètres modifiables pour les applications 3d :

Après avoir lu l’aide Nvidia sur les paramètres, je décide de mettre le basculement en auto sélection, désactiver la synchronisation verticale et la triple mise en mémoire tampon.

 

image003

 

Voilà ce que j’obtiens avec la 2013 :

 

AutoCAD version          

19.0s

2013

 

 

 

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

 

 

C2012 Total Index  

324

 

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

 

 

3D Graphics Index  

595

 

2D Graphics Index  

268

 

Disk Index         

182

 

CPU Index          

249

 

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

 

 

(Single Loop Time  

16

minutes

 

On voit qu’il n’ y a pas eu d’amélioration, mais qu’au contraire, on  a une dégradation de 3%.

Ce n’est donc pas de ce côté qu’il faut chercher …

Et le driver performance nvidia ?

 

AutoCAD version          

 18.1s

2011

 

 

 

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

 

 

C2012 Total Index  

278

 

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

 

 

3D Graphics Index  

610

 

2D Graphics Index  

72

 

Disk Index         

196

 

CPU Index          

235

 

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

 

 

(Single Loop Time  

33

minutes

 

Surprise ! il serait deux fois plus lent que le pilote hdi ! Ça m’intrigue, car à l’usage professionnel, ce n’est pas ce que j’ai ressenti …

Je refais des tests, cette fois ci en surveillant l’écran de temps à autre (pour cela, il faut aussi désactiver la mise en veille de l’écran):

Lorsque j’utilise le driver performance, ou que je désactive l’accélération matérielle, l’écran est mis à jour normalement, et je peux mesurer la progression du test.

Si j’active l’accélération matérielle avec les drivers non performance, l’affichage reste figé lors de la rotation 3d des volants (début du test) et Autocad ne répond plus pendant tout le test.

Je me dis que c’est peut-être pour cela qu’Art Liddle préconise de désactiver les fonctions aéro …

C'est ce que nous allons voir dans le prochain article ...

 

 

 

Cadalyst Benchmark ©Copyright 2012 Art Liddle and Cadalyst. You may freely use the Cadalyst Systems Benchmark and/or modify it for personal use only. This benchmark test (including all files) may not be copied, modified, or distributed for commercial purposes without the written consent of the copyright holders. Test results may not be published for commercial purposes without the written consent of the copyright holders.

Le Blog de G-eaux n’est pas rémunéré par de la publicité.

 

g-eaux

Partager cet article
Repost0
15 juin 2012 5 15 /06 /juin /2012 10:13

Object Data View (ODV), un outil de visualisation et de modification des données d’objet pour Autocad Map

Cet article date de 2012, ODV n'a pas été mis à jour et ne le sera pas.

Il risque de très mal fonctionner sur les versions postérieures à la 2015.

Mais il existe une excellente alternative, par Olivier Eckman:

"Exploitation des données d'objets"

disponible sur Autodesk App Store.

Mais vous pouvez tout de même lire l'article de 2012:

 

odv.gif

D’où provient Object Data View ?

Object Data View (ODV) a initialement été développé au sein d'Autodesk pour la version 2006 de Map.

Avec Guillaume Berson, J'ai répondu à un appel aux bonnes volontés de Gwenaël Bachelot pour porter ODV sur les versions plus récentes.
Gwenaël nous a donc confié les sources, qui restent la propriété intellectuelle d'Autodesk, je ne les diffuserais donc pas.

 

Object Data View est-il enfin utilisable?


Oui, le portage de l'application originale a été réalisé pour Map 2010 à 2012 pour x86(Win 32) et x64.
Voici la dll la plus simple et certainement la plus stable dans toutes les configurations:

http://www.g-eaux.com/download/MapObjectDataViewControl_base.dll

Si elle est assez stable et fonctionnelle,
son principal problème est une mauvaise mise en évidence des entités sélectionnées.

Pour l'instant, la multi-sélection dans le tableau n'est pas supportée.

Pour que le programme soit vraiment utilisable, j'ai cherché à améliorer la mise en évidence des entités sélectionnées et ajouté des commandes de zoom qui permettent de savoir où on est, sans tout recommencer :


 

Voici la dll améliorée : http://www.g-eaux.com/download/MapObjectDataViewControl.dll

Pour les polylignes, le highlight est donc bien plus convaincant, mais pour les blocs et les points, ce n'est pas encore ça.

Mais avec les commandes de zoom, on arrive à pouvoir utiliser le programme avec un minimum de confort.

Je conseille de définir les limites de la zone avec la commande "limites" avant de lancer ODV pour délimiter la zone de travail (pb des xref hors zone)


Limitations:
Par rapport à la version originale, ODV ne permet pas la sélection de plusieurs lignes de tableau.

On peut tout de même l’utiliser pour changer plusieurs valeurs, mais on aura un message d’erreur.

Les autres limitations sont détaillées dans le Manuel d’utilisation d’ODV à la fin de l’article :

Toutes les fonctionnalités qui ne sont pas assurées sont en grisé.

Elles seront rétablies en priorité

Autres axes de développement prévus :


- Le portage vers Map 2013

- L'export du tableau au format Excel

- La sauvegarde des derniers paramètres de la session.

- L’utilisation d’ODV en mode non modal, afin de pouvoir travailler parallèlement sur le dessin

 

Manuel d’utilisation d’ODV :

1) Depuis la ligne de commande Map, tapez _NetLoad (ceci ne doit être fait qu’une fois pour toute la session d’Autocad, même si vous ouvrez plusieurs dessins)


2) Sélectionnez MapObjectDataViewControl.dll


3) Tapez l'ODV ou ODDATAVIEW pour exécuter le programme


4) Sélectionnez individuellement chaque ligne pour travailler sur le tableau

(Vous pouvez sélectionner plusieurs lignes dans la grille avec la touche shift et éditer un champ tout à la fois par un clic droit sur ​​le champ, ça marche mais vous aurez un message d’erreur.)


5) Vous pouvez sélectionner l'option de menu AutoZoom pour zoomer et mettre en évidence les lignes sélectionnées


6) Vous pouvez sélectionner des éléments sur la carte et mettre en évidence les lignes correspondantes sur le contrôle de la vue des données.

Procédure d'utilisation détaillée:

a)  Tapez 'ODV

 

b)  Vous pouvez sélectionner les entités par plusieurs méthodes :


Sélectionnez les entités manuellement  ou automatiquement  (toutes les entités du dessin)

Vous pouvez indiquer un filtre  par calque qui filtrera la sélection manuelle ou automatique.

La sélection ne sera  activée  que lorsque vous aurez choisi une table de donnée :

 

c)   Sélectionnez la table de données objet que vous souhaitez utiliser :

A partir de là, le bouton « read data » et actif :

 

d)   Cliquez sur « read data »  et vous verrez apparaître les données d’objet sous forme de tableau.

 

e)    Utilisez le menu « HighlightRecords » pour sélectionner des objets sur la carte et mettre en évidence les lignes correspondantes dans le tableau

 

f)  Avec le menu « Showrecords » vous pouvez filtrez les lignes affichées dans le tableau :

La ligne « Filter data » est identique au bouton « Filter data » qui permet de filtrer les lignes du tableau par rapport à une valeur d’un champ (ex : Diametre = 100 si vous avez un champ (colonne)  Diametre dans la table)

Vous pouvez afficher uniquement les lignes mise en évidence par la commande « HighlightRecords »

« Show all » est équivalent au bouton « reset grid » annule toutes les opérations de filtration sur le tableau.


g) Utilisez le menu « AutoZoom »  pour activer le zoom automatique pour zoomer sur les objets sélectionnés et autohighlight pour les mettre en évidence


h) Utilisez le menu « AutoZoom » pour sélectionner des objets sur la carte et mettre en évidence ces lignes. Vous pouvez afficher uniquement les lignes sélectionnées en utilisant l'option de menu pour afficher des enregistrements mis en évidence seulement.

i) Commandes de zoom

Avant de lancer ODV, définissez les limites de votre carte avec la commande limites d’autocad.

Cela vous permettra d’utiliser le bouton ZoomLimits pour zoomer aux limites.

Vous pouvez également utiliser le bouton ZoomExtents pour zoom étendu et ZoomBack pour faire un zoom à échelle de x -0.5

 

 Le Blog de Gwenaël Bachelot d'Autodesk France :

http://geospatialfrance.typepad.com/

 

 

g-eaux

 

 

Partager cet article
Repost0
14 juin 2012 4 14 /06 /juin /2012 17:53
Petits outils pour utiliser Open Office avec Autocad

J’ai commencé à utiliser Open Office dès la version 1.

J’avais une version complète de Ms office,  mais l’installer était tellement long - et à l’époque je changeais souvent de config – avec des codes à rallonge à entrer pour chaque module, que j’ai pris l’habitude d’utiliser oOo.

De là, la frustration lorsque l’on n’a pas Excel, et que l’on voit passer des outils en lisp pour utiliser Excel avec Autocad.

J’ai donc essayé de créer une bibliothèque équivalente à celles utilisant Excel pour  oOo.

Ces premiers efforts  datent de 2007, et depuis 2008, rien de nouveau n’a été fait.

J’espère relancer la machine en exhumant ce vieux sujet …

 

Problématique

Le premier écueil rencontré, c’était d’ouvrir un document vierge oOo depuis Autocad.

Puis de paramétrer ce document.

Cela n’a pas été chose facile, malgré l’aide du site kalitech.

Ensuite j’ai eu besoin de piloter l’ouverture de fichiers  xls, ods et csv existant depuis Autocad.

Les fichiers csv sont très utiles puisqu’on peut le générer directement avec un Write-line.

Limitations

Il n’y a aujourd’hui que 4 routines :

acad2oOOsCalc Qui ouvre une feuille de calcul vierge OOo en utilisant l'API OOo pour VB

 setOOoProp pour paramétrer les propriétés d'un objet de l'API OOo en VB

OpenCsvWithoOOsCalc Pour ouvrir une feuille de calcul au format csv spécifiée en utilisant l'API OOo pour VB

 

OpenSpreadSheetWithoOOsCalc Pour ouvrir une feuille de calcul spécifiée en utilisant l'API OOo pour VB / feuille

Prérequis:

Que PowerClic  soit installé et fonctionnel, pour avoir accès aux fonctions « pw_ »

 

 

Instructions d’utilisations
Discussions et sites de référence :

 

http://cadxp.com/index.php?/topic/15105-connexion-autocad-excel/page__st__20

http://www.kalitech.fr/clients/doc/VB_APIOOo_fr.html

 

 

Début du code ci-dessous

 

;******************************************************************************
;§/openoffice/ Ouvrir une feuille de calcul vierge OOo en utilisant l'API OOo pour VB / none
;;site web de réference :
;;http://www.kalitech.fr/clients/doc/VB_APIOOo_fr.html
;
(defun acad2oOOsCalc ( / Oprop openPar)
;;;Set serviceManager = CreateObject("com.sun.star.serviceManager")
(setq serviceManager
     (vlax-create-object "com.sun.star.serviceManager")
)
;;;Set Desktop = serviceManager.createInstance("com.sun.star.frame.Desktop")
(setq Desktop (vlax-invoke-method
         serviceManager
         'createInstance
         "com.sun.star.frame.Desktop"
        )
)


;;;LoadParams:=VarArrayCreate([0,-1],varVariant);
(setq openPar (vlax-make-safearray vlax-vbVariant '(0 . 2)))

;;;'On appelle la fonction setOOoProp définie précédemment pour récupérer la structure
;;; Set OpenPar(0) = setOOoProp("ReadOnly", True)

;(setq Oprop (setOOoProp "ReadOnly" :vlax-true))
(setq Oprop (setOOoProp "ReadOnly" :vlax-false))
(vlax-safearray-put-element openPar 0 Oprop)
;;; Set OpenPar(1) = setOOoProp("Password", "secret")
(setq Oprop (setOOoProp "Password" "secret"))
(vlax-safearray-put-element openPar 1 Oprop)

;;; Set OpenPar(2) = setOOoProp("Hidden", False)
(setq Oprop (setOOoProp "Hidden" :vlax-false))
(vlax-safearray-put-element openPar 2 Oprop)

;;;Set DocumentoOOo = Desktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, openPar)

(Setq DocumentoOOo
     (vlax-invoke-method
     Desktop   'loadComponentFromURL
     "private:factory/scalc"   "_blank"
     0         openPar
     )
)
)


;******************************************************************************
;§/openoffice/ Paramétrer les propriétés d'un objet de l'API OOo en VB / cName uValue
;; Certaines propriétés d'objet de l'API OOo sont du type structure.
;;Pour des raisons liées à l'implémentation du pont UNO-Automation
;;(cf http://api.openoffice.org/docs/DevelopersGuide/ProfUNO/ProfUNO.htm#1+4+4+5+3+Usage+of+Types),
;;on ne peut passer directement une structure VB en argument d'une fonction de l'API OOo. A partir de VB,
;;il faut donc utiliser une fonction particulière de l'API (Bridge_GetStruct)
;;pour accéder aux structures et pouvoir ensuite passer cette structure à la fonction OOo

(defun setOOoProp (cName uValue / oSM oPropertyValue)

;;;Function setOOoProp(cName, uValue) As Object
;;;
;;; Dim oPropertyValue As Object
;;; Dim oSM As Object
;;; 
;;; Set oSM = CreateObject("com.sun.star.ServiceManager")
(setq oSM (vlax-create-object "com.sun.star.serviceManager"))
;;; Set oPropertyValue = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")

(Setq oPropertyValue
     (vlax-invoke-method
     oSM
     'Bridge_GetStruct
     "com.sun.star.beans.PropertyValue"
     )
)

;;; oPropertyValue.Name = cName
(vlax-put-property oPropertyValue 'Name cName)

;;; oPropertyValue.Value = uValue
(vlax-put-property oPropertyValue 'Value uValue)
;;;
;;; Set setOOoProp = oPropertyValue
;;;
;;;End Function
oPropertyValue
)


;******************************************************************************
;§/openoffice/ Ouvrir une feuille de calcul au format csv spécifiée en utilisant l'API OOo pour VB / feuille
;;site web de réference :
;;http://www.kalitech.fr/clients/doc/VB_APIOOo_fr.html
;
(defun OpenCsvWithoOOsCalc ( feuille / Oprop openPar)
(if (not feuille)
(setq feuille (getfiled "Feuille de calcul à charger : " (getvar "dwgprefix") "csv" 0) )
)
(setq feuille (strcat "file:///" (pw_slashit feuille )))
;;;Set serviceManager = CreateObject("com.sun.star.serviceManager")
(setq serviceManager
     (vlax-create-object "com.sun.star.serviceManager")
)
;;Set Desktop = serviceManager.createInstance("com.sun.star.frame.Desktop")
(setq Desktop (vlax-invoke-method
         serviceManager
         'createInstance
         "com.sun.star.frame.Desktop"
        )
)


;;;LoadParams:=VarArrayCreate([0,-1],varVariant);
(setq openPar (vlax-make-safearray vlax-vbVariant '(0 . 2)))

;;;'On appelle la fonction setOOoProp définie précédemment pour récupérer la structure
;;; Set OpenPar(0) = setOOoProp("ReadOnly", True)

;;; ;(setq Oprop (setOOoProp "ReadOnly" :vlax-true))
(setq Oprop (setOOoProp "ReadOnly" :vlax-false))
(vlax-safearray-put-element openPar 0 Oprop)

;;;;;; Set OpenPar(2) = setOOoProp("Hidden", False)
(setq Oprop (setOOoProp "Hidden" :vlax-false))
(vlax-safearray-put-element openPar 1 Oprop)

;;; - * - *
;; attention, ce qui suit est primordial pour ouvrir du csv avec openoffice:


;;;Dim oPropertyValue(0) As New com.sun.star.beans.PropertyValue
;;;oPropertyValue(0).Name = "FilterOptions"
;;;oPropertyValue(0).Value = "44"
;;;
;;;oDoc = starDeskTop.loadComponentFromURL( oUrl, "_blank", 0, oPropertyValue )

(setq Oprop (setOOoProp "FilterOptions" "44"));_ 44 pour , car (ascii ",") = 44
;;; (setq Oprop (setOOoProp "FilterOptions" "59"));_59 pour ;

(vlax-safearray-put-element openPar 2 Oprop)


;;; ;;;mFileProperties(0).Name = "FilterName"
;;; ;;;mFileProperties(0).Value = "scalc: Text - txt - csv (StarCalc)"
;;; (setq Oprop (setOOoProp "FilterName" "scalc: Text - txt - csv (StarCalc)"))
;;; (vlax-safearray-put-element openPar 3 Oprop)
;;;



;;;Set DocumentoOOo = Desktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, openPar)

(Setq DocumentoOOo
     (vlax-invoke-method
     Desktop   'loadComponentFromURL
     feuille  "_blank"
     0         openPar
     )
)
)

;******************************************************************************
;§/openoffice/ Ouvrir une feuille de calcul spécifiée en utilisant l'API OOo pour VB / feuille
;;site web de réference :
;;http://www.kalitech.fr/clients/doc/VB_APIOOo_fr.html
;
(defun OpenSpreadSheetWithoOOsCalc ( feuille / Oprop openPar)
(if (not feuille)
(setq feuille (getfiled "Feuille de calcul à charger : " (getvar "dwgprefix") "ods;xls" 0) )
)
(setq feuille (strcat "file:///" (pw_slashit feuille )))


;;;Set serviceManager = CreateObject("com.sun.star.serviceManager")
(setq serviceManager
     (vlax-create-object "com.sun.star.serviceManager")
)
;;Set Desktop = serviceManager.createInstance("com.sun.star.frame.Desktop")
(setq Desktop (vlax-invoke-method
         serviceManager
         'createInstance
         "com.sun.star.frame.Desktop"
        )
)


;;;LoadParams:=VarArrayCreate([0,-1],varVariant);
(setq openPar (vlax-make-safearray vlax-vbVariant '(0 . 1)))

;;;'On appelle la fonction setOOoProp définie précédemment pour récupérer la structure
;;; Set OpenPar(0) = setOOoProp("ReadOnly", True)

;;; ;(setq Oprop (setOOoProp "ReadOnly" :vlax-true))
(setq Oprop (setOOoProp "ReadOnly" :vlax-false))

(vlax-safearray-put-element openPar 0 Oprop)
;;;;;; Set OpenPar(1) = setOOoProp("Password", "secret")
;;; (setq Oprop (setOOoProp "Password" "secret"))
;;; (vlax-safearray-put-element openPar 1 Oprop)

;;;;;; Set OpenPar(2) = setOOoProp("Hidden", False)
(setq Oprop (setOOoProp "Hidden" :vlax-false))
(vlax-safearray-put-element openPar 1 Oprop)

;;;Set DocumentoOOo = Desktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, openPar)

(Setq DocumentoOOo
     (vlax-invoke-method
     Desktop   'loadComponentFromURL
     feuille  "_blank"
     0         openPar
     )
)
)
 

g-eaux

 

 

 

 

Partager cet article
Repost0
29 mai 2012 2 29 /05 /mai /2012 16:09
Geler et changer la couleur des calques par pointage, une alternative aux outils Autocad

La gestion des calques par pointage, c’est un des premiers centres d’intérêt que j’ai eu, quand j’ai commencé à bricoler Autocad .

L’intérêt s’est estompé, parce que les commandes dont je disposais étaient suffisantes, et parce qu’Autocad, via les ExpressTools, puis les outils de gestion des calques, a fourni un grand nombre d’outils très performants.

Je n’ai donc pas retravaillé ma vieille commande c:cou_grou_calq depuis la version 12, mais aujourd’hui, en 2012, ses carences m’on parues trop gênantes.

J’ai donc fait une pierre deux coups retravailler une commande pour changer la couleur des calques par pointage, et créer une amélioration de la commande Autocad « GELCALQUE »

Problématique

Quand on veut gérer les calques par pointage, le problème  principal, c’est de trouver le calque utile pour l’action envisagée :

Rien de plus énervant que de geler 10 fois le calque « 0 » ou de changer la couleur du calque « xref » ; rien qui ne fasse plus perdre de temps que de devoir annuler le gel d’un calque, quand on travaille sur de gros dessins.

Tous ces problèmes viennent de la complexité de l’imbrication des entités dans Autocad :

Une entité sélectionnée par pointage peut :

-          Appartenir au dessin.

-          Etre un attribut de bloc.

-          Appartenir à un bloc créé dans le calque 0, mais insérée sur un calque nommé.

-          Appartenir à un bloc créé d’entité appartenant à des calques nommés, mais inséré sur le calque 0.

-          Tous les cas de figure ci-dessus imbriqué dans d’autres blocs, ou dans des xrefs, et cela sans limitation …

La commande GELCALQUE  a bien un paramétrage pour l’imbrication, mais le résultat n’est pas garanti, on tombe souvent sur le mauvais calque.

Limitations

Pour le changement de couleur, il n’y a pas de gestion des couleurs par viewport.

Pour la gestion de l’imbrication, j’imagine qu’elle n’est pas suffisamment exhaustive, les retours sont les bienvenus.

 

 

Prérequis:

Que PowerClic  soit installé et fonctionnel, pour avoir accès aux fonctions « pw_ »

 

 

Instructions d’utilisations

 

COU_GROU_CALQ

 

Sélectionnez les entités à changer de couleur, le nom du calque apparaît sur la ligne de commande.

En cas d’erreur, il faut annuler par escape.

Puis sélectionner la couleur, et c’est tout.

 

GEL_GROU_CALQ

 

Sélectionnez les entités à geler, ou à geler dans le viewport  courant, le nom du calque apparaît sur la ligne de commande, et le calque est désactivé,  au fur et à mesure.

En cas d’erreur, il faut annUler, le calque est simplement réactivé, il n’y a donc pas de regen.

Les calques ne sont gelés qu’une fois la commande validée.

Début du code ci-dessous

 

;*****************************************************************************
;§/calques/Change la couleur d'un groupe de calques sélectionnés par pointage/none
;
(defun c:cou_grou_calq (/ e esel plan lplan lsplan ncoul sel eg egsel lent ebl isxref ajoutPlan)
(setq ajoutPlan "Oui")
(prompt "\nChange la couleur d'un groupe de plans/calques")
(while
(setq
sel (nentsel "\nSélectionnez une entité ou une sous entité: ")
)
(setq esel (car sel))
(setq egsel (entget esel))

(cond
((= "ATTRIB" (cdr (assoc 0 egsel))) ;_attribut
    (setq plan (cdr (assoc 8 egsel)))
    (if (= "0" plan) ;_entité d'un bloc créée dans le calque 0
     (progn            ;-recherche le calque dans lequel le bloc à été inséré  

     (setq ebl (entget (cdr (assoc 330 egsel))))
     (setq plan (cdr (assoc 8 ebl)))
     )
    )
    ;;(prompt "\nAttrib")
)

((= (length sel) 2) ;_entité non imbriquée = entsel

    (setq plan (cdr (assoc 8 egsel)))
    ;;(prompt "\nNon imbriqué")
)
((and
     (= (length sel) 4) ;_appartient à un bloc
     t
    )

    (setq plan (cdr (assoc 8 egsel)))
    (if (= "0" plan) ;_entité d'un bloc créée dans le calque 0
     (progn            ;-recherche le calque dans lequel le bloc à été inséré
     (setq lent (last sel))
     (while
     (and lent
         (= "0"
         (setq
            plan (cdr (assoc 8 (entget (setq e (car lent)))))
         )
         )
     )
     (setq lent (cdr lent))
     ;;(print plan)
     );_while
     (if (PW_ISXREF e) ;_entité appartient à une xref
     (setq isxref T)
     )
    
     )
    )
    ;;(prompt "\nappartient à un bloc")
)
)
(if isxref
(pw_getkwordmem (strcat "changer couleur du calque d'insertion de xref \"" plan "\" ? /Oui Non") "ajoutPlan")
)
(if (= "Oui" ajoutPlan)
(progn
(prompt (strcat " " plan " changera de couleur"))
(setq lplan (cons plan lplan))
)
)
(setq isxref nil
     ajoutplan "Oui")
)

(if lplan
(progn
(setq lsplan
     (apply 'strcat
         (mapcar '(lambda (x) (strcat x ",")) lplan)
     )
)
(setq ncoul (acad_colordlg 7 nil))
(command "_LAYER" "_C" ncoul lsplan "")
)
)

(princ)
)
;*****************************************************************************
;§/calques/Gele un groupe de calques sélectionnés par pointage/none
;
(defun c:gel_grou_calq (/   e   esel    plan    lplan   lsplan
            ncoul   sel eg  egsel   lent    ebl
            isxref  ajoutPlan   derplan VPMODE initstr
         )
(pw_setvar1 "cmdecho" 0)
(setq ajoutPlan "Oui"
    initstr "")
(prompt
"\nGele un groupe de calques sélectionnés par pointage"
)
(while
(setq
sel (nentsel (strcat "\nSélectionnez une entité ou une sous entité: " initstr))
)
(if (= "annUler" sel)
(progn
     (setq lplan (pw_supp_elem derplan lplan))
     (command "_LAYER" "_on" derplan "")
)
(progn
     (setq esel (car sel))
     (setq egsel (entget esel))

     (cond
     ((= "ATTRIB" (cdr (assoc 0 egsel))) ;_attribut
     (setq plan (cdr (assoc 8 egsel)))
     (if (= "0" plan) ;_entité d'un bloc créée dans le calque 0
     (progn            ;-recherche le calque dans lequel le bloc à été inséré  

        (setq ebl (entget (cdr (assoc 330 egsel))))
        (setq plan (cdr (assoc 8 ebl)))
     )
     )
     ;;(prompt "\nAttrib")
     )

     ((= (length sel) 2) ;_entité non imbriquée = entsel

     (setq plan (cdr (assoc 8 egsel)))
     ;;(prompt "\nNon imbriqué")
     )
     ((and
     (= (length sel) 4) ;_appartient à un bloc
     t
     )

     (setq plan (cdr (assoc 8 egsel)))
     (if (= "0" plan) ;_entité d'un bloc créée dans le calque 0
     (progn            ;-recherche le calque dans lequel le bloc à été inséré
        (setq lent (last sel))
        (while
         (and lent
         (= "0"
             (setq
             plan
             (cdr (assoc 8 (entget (setq e (car lent)))))
             )
         )
         )
         (setq lent (cdr lent))
         ;;(print plan)
        ) ;_while
        (if (PW_ISXREF e) ;_entité appartient à une xref
         (setq isxref T)
        )

     )
     )
     ;;(prompt "\nappartient à un bloc")
     )
     )
     (if isxref
     (pw_getkwordmem
     (strcat "changer couleur du calque d'insertion de xref \""
         plan
         "\" ? /Oui Non"
     )
     "ajoutPlan"
     )
     )
     (if (= "Oui" ajoutPlan)
     (progn

     (prompt (strcat " " plan " sera gelé :"))
     (setq lplan (cons plan lplan))
     (command "_LAYER" "_off" plan "")
     (setq derplan plan)
     (initget 0 "annUler")
     (setq initstr "[annUler]")
     )
     )
     (setq isxref nil
     ajoutplan "Oui"
     )
)
)
) ;_while

;;savoir si on utilise fcalque ou calque (récupéré des vieux expresstools)
(if (and (= 0 (getvar "tilemode"));_ if in a paper space
(/= 1 (getvar "cvport"));_ viewport
)
(setq VPMODE T);_ set flag for freeze behavior
(setq VPMODE nil);_ set flag for freeze behavior

)

(if lplan
(progn
(setq lsplan
     (apply 'strcat
         (mapcar '(lambda (x) (strcat x ",")) lplan)
     )
)


(if VPMODE
    (command "_VPLAYER" "_freeze" lsplan "_current" "")
    (command "_LAYER" "_freeze" lsplan "")
)
(command "_LAYER" "_on" lsplan "")
)
)
(pw_setvar2 "cmdecho" )
(princ)
)

 

g-eaux

 

 

 

 

Partager cet article
Repost0
11 avril 2012 3 11 /04 /avril /2012 09:30

Dic_Explorer, l'explorateur de dictionnaire pour Autocad

 

Complément  de  Handle_explorer

Dic_explorer est une interface très simple pour accèder rapidement au contenu des dictionnaires d'un dessin.

 

Une fois que le dictionnaire à été choisit et affiché, il est disponible pour handle_explorer, avec lequel vous pouvez poursuivre l'exploration.

 

Pré-requis:

Que PowerClic  et Handle_explorer soient installés

 

Exemple d'utilisation :

Commande: Dic_explorer

 

dic_explorer.png

Afficher l'entget entité ?Oui/Non :o

    (-1 . <Nom d'entité: 7ffff605a70>)
    (0 . DICTIONARY)
    (5 . 21F)
    (102 . {ACAD_REACTORS)
    (330 . <Nom d'entité: 7ffff6038c0>)
    (102 . })
    (330 . <Nom d'entité: 7ffff6038c0>)
    (100 . AcDbDictionary)
    (280 . 0)
    (281 . 1)
    (3 . AcMapDMStylizedEntities)
    (350 . <Nom d'entité: 7ffff605b80>)
    (3 . AcMapResourceManager)
    (350 . <Nom d'entité: 7ffff613f10>)
    (3 . FSD_Dictionary)
    (350 . <Nom d'entité: 7ffff605a80>)
    (3 . MAP_DISPLAY_CUSTOMOBJ_REG_TABLE)
    (350 . <Nom d'entité: 7ffff605ad0>)
    (3 . MAP_DISPLAY_MANAGEMENT_DICTIONARY)
    (350 . <Nom d'entité: 7ffff605aa0>)
    (3 . MAP_DISPLAY_STYLELIBRARY_DICTIONARY)
    (350 . <Nom d'entité: 7ffff605ab0>)
    (3 . MAP_RESOURCE_VERSION_MANAGEMENT_DICTIONARY)
    (350 . <Nom d'entité: 7ffff605b90>)
- - - - - - - - - - - - - -


Afficher l'object-dump de entité ?Oui/Non :o

; IAcadDictionary: Un objet incorporant de stockage et de récupération des
objets
; Valeurs de propriétés:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140f091d8>
;   Count (RO) = 7
;   Document (RO) = #<VLA-OBJECT IAcadDocument 00000000263a76f0>
;   Handle (RO) = "21F"
;   HasExtensionDictionary (RO) = 0
;   Name = "Autodesk_MAP"
;   ObjectID (RO) = 839
;   ObjectID32 (RO) = 839
;   ObjectName (RO) = "AcDbDictionary"
;   OwnerID (RO) = 842
;   OwnerID32 (RO) = 842
; Méthodes prises en charge:
;   AddObject (2)
;   AddXRecord (1)
;   Delete ()
;   GetExtensionDictionary ()
;   GetName (1)
;   GetObject (1)
;   GetXD
- - - - - - - - - - - - - -
Le dictionnaire est disponible pour handle_explorerata (3)
;   Item (1)
;   Remove (1)
;   Rename (2)
;   Replace (2)
;   SetXData (2)

 

Code source :

 

;**************************************************************************
;;§/dxf/Exploration des dictionnaiores du dessin /none

(defun c:Dic_explorer ( / odics lnoms odict eg2 cont odump l)
(setq odics (vla-get-dictionaries pw-acaddocument))
(setq lnoms (PW_VLAX_LIST_NOM_ITEMS odics))
(pw_bydefault "aff-dic" '(""))
(setq aff-dic
     (pw_s_lchaines3
     "Choisissez le dictionnaire à afficher : "
     lnoms
     nil
     aff-dic
     )
)

(setq odict (vla-item odics (car aff-dic)))
(setq HDE-ident (vla-get-handle odict))
(pw_getkwordmem
         "\nAfficher l'entget entité ?/Oui Non"
         "cont"
     )
     (if (= "Oui" cont)
         (progn
         (setq eg2 (entget (pw_to_ename odict)))
         (foreach l eg2
         (prompt "\n ")
         (princ l)
         )
         (prompt "\n- - - - - - - - - - - - - -")
         )
     )
(pw_getkwordmem
         "\nAfficher l'object-dump de l' entité ?/Oui Non"
         "odump"
     )
     (if (= "Oui" odump)
         (progn
         (vlax-dump-object odict T)
         (prompt "\n- - - - - - - - - - - - - -")
         )
     )
(prompt "\nLe dictionnaire est disponible pour handle_explorer")

)
 


  g-eaux

 

Partager cet article
Repost0
9 mars 2012 5 09 /03 /mars /2012 10:12

Autres fonctions de PowerTexTools:

Mis à part les commandes de numérotation sans doublon, présentée dans le billet précédent, Il existe d'autre commandes intéressantes, et surtout une commande qui permet une gestion intelligente de la partie d'un mot à incrémenter:

Par exemple, la chaine départ "A-1-1000-A" peut s'incrémenter de 4 façons possibles :

A-1-1000-B

ou

A-1-1001-A

ou

A-2-1000-A

ou

B-1-1000-A

 

Ci-dessous une animation pour présenter ces commandes:

 

 

Télécharger PowerClic et les PowerTexTools

 

G-eaux

 

 

Partager cet article
Repost0
8 mars 2012 4 08 /03 /mars /2012 18:00

Problématique

Le casse-tête sous Autocad, lorsque l'on numérote un grand nombre d'objet, c'est d'être sûr qu'il n'y a pas de doublons.

 

Une solution

 

PowerClic propose un grand nombre de fonctions de numérotations et d'incrément, mais également trois fonctions qui vérifient l'absence de doublon.

 

En l'absence de toute configuration spéciale, chaque bloc est considéré comme une famille de numérotation.

 

Mais on peut également  créer une section dans le fichier thematic.ini du thème courant :

 

[BLOCK NUMBERING]
;List of blocks that used value must be checked before
;automatic numbering used by PowerTexTools. 
;list description : BLOCK,NUMBERING_FAMILLY
;everything must be capitalized
E-BOUCHE,BOUCHE
E-BASSIN,BOUCHE
E-BOUINC,INCENDIE
E-POTINC,INCENDIE


 

 

Dans l'exemple ci-dessus, on voit que deux familles de deux blocs sont créées.

Nous allons voir dans une vidéo le résultat sous autocad :

 

A savoir :

Cette fonctionnalité est simple, pas de réacteurs. Le principe est de faire l'inventaire des numéros au lancement de la commande.

Si on annule une numérotation, ou que l'on copie colle des blocs avec de nouveaux numéros, il faut réinitialiser PowerClic avec le bouton "relire paramètres"

 

Télécharger PowerClic et les PowerTexTools

 

http://www.g-eaux.com

 

 

Partager cet article
Repost0
8 mars 2012 4 08 /03 /mars /2012 14:12
Installer les produits Autodesk 2012 sur Vista ou Seven, 32 ou  64

Problématique

Installer les produits autodesk 2012 sur les plateformes 64 peut poser des problèmes assez généraux, dont je parle ici

Mais il y a également un problème qui semble spécifique aux produits 2012 en général, c'est le problème de l'installation de .Net 4.0

 

En effet, bien que .net 4.0 soit déjà, et correctement, installé sur votre ordi, l'installateur Autodesk ne le trouve pas, et lance une réinstallation de .Net 4.0, en particulier du langage pack, qui demande un redémarage du sytème, qui se produit au beau milieu de l'installation.

 

Vous pouvez penser que de toute façon, la prochaine fois l'installation marchera, mais c'est faux, le même problème se reproduit indéfiniment.

 

J'ai déjà expliqué la solution consistant à refaire une installation propre de .net 4.0  ici , mais il semble que cette solution ne soit pas toujours suffisante.

dans ce cas, il faut passer à quelque chose de + radical: Modifier le .ini de l'installation.

 

Avant de commencer

Préparer l'installateur

Si votre distribution est une clef Usb, il faut simplement copier le fichier setup.ini vers setupori.ini

Si vous avez un dvd, copier le dans un répertoire sur un disque local.

 

Vérifier votre installation de .Net 4

dans programme et fonctionnalités, vous devez avoir  ce 4 lignes, en version  4.0.30319 :

net4.png

Dans le cambouis

Ouvrez le fichier setup.ini

 

dans toutes les sections de ce type, trouvez la ligne PREREQUISITE

 

Exemple :

 

[C3D]
PLATFORM=NATIVE
PREREQUISITE=IE;SSE2;DOTNET20;DOTNET4;DOTNET4LANG;VCREDIST2008SP1X86;VCREDIST2008SP1X64;DIRECTX;FaroSDK;MSXML6;WMF95X64;CM2012;CMILB2012;SNAP_PRE;SQL_CE_x86;SQL_CE_x64;VBPOWERPACK

Supprimez partout les mots  DOTNET4 et DOTNET4LANG

 

La ligne originale devient :

 

PREREQUISITE=IE;SSE2;DOTNET20;VCREDIST2008SP1X86;VCREDIST2008SP1X64;DIRECTX;FaroSDK;MSXML6;WMF95X64;CM2012;CMILB2012;SNAP_PRE;SQL_CE_x86;SQL_CE_x64;VBPOWERPACK

 

Sauvez le fichier INI, relancez l'installation, l'intallation devrait directement passer à direct x, et devrait se terminer normalement

 

G-eaux

Partager cet article
Repost0
7 mars 2012 3 07 /03 /mars /2012 17:47

Cette fonctionnalité arrive en 6eme position dans les demandes de nouvelles fonctionnalités des utilisateurs.

http://augifr.ning.com/forum/topics/les-10-souhaits-preferes-des-listes-de-voeux-de-l-augi

 

Ces commandes sont intégrées à Powerclic depuis un ou deux ans

Les références traitées sont les dwg et les images (je n'ai pas encore essayé les autres types)

Elles permettent de passer d'un chemin absolu à un chemin relatif et vice versa.

La commande Xretrieve est particulièrement intéressante, car elle permet d'adapter les chemins d'xref d'un dessin provenant d'un tiers à votre propre arborescence :

C'est très utile lorsque l'on vous envoi un cédérom contenant toute l'arborescence d'un projet, mais que l'entreprise qui l'a créé utilisait un chemin réseaux.

On peut pallier à cela en utilisant les projets, mais c'est un peu moins souple que la redéfinition définitive depuis le dessin.

Quant au gestionnaire d'Xref d'Autodesk, je le trouve un peu usine à gaz, et surtout, il ne permet pas de passer en chemin relatif.

Il existe d’autres fonctions qui ne sont pas documentées dans l'aide PowerClic, on peut les trouver ici

 

 

Listes des fonctions :

C:IABSOLU Transforme un chemin d'une imagedef relatif en chemin absolu 

C:IRELATIVE Tronque le chemin d'une images en gardant le seul sous dossier

C:XABSOLU Transforme un chemin de xref relatif en chemin absolu 

C:XRELATIVE Tronque le chemin d'une xref en gardant le seul sous dossier 

C:XRETRIEVE Retrouve le chemin absolu d'une xref en partant d'une racine

 G-EAUX

Partager cet article
Repost0