Overblog
Suivre ce blog Administration + Créer mon blog
16 mai 2013 4 16 /05 /mai /2013 09:34

Installation et mise à jour de PowerClic 7.21 pour Autocad

 

J’ai déjà consacré deux articles à PowerClic : Installation et mise à jour

Je ne reviendrai donc pas sur l’histoire et le principe de PowerClic, je rappellerai simplement la procédure d’installation

 

Télécharger PowerClic:

Page de téléchargement PowerClic

 

Procédures d’installation

Autocad 2000 à 2009, Windows 32 bits

Pour ces versions, l’installation est entièrement automatisée :

Il n'y a rien à faire d'autre que de télécharger la dernière version (7.21), fermer Autocad, et lancer PowerClic.exe, puis choisir sa version d'Autocad dans la fenêtre Ms Dos qui s'ouvre, et c'est partit.
Ce mode de fonctionnement est adapté aux intérimaires, aux nomades qui utilisent PowerClic depuis une clé USB.

Une fois PowerClic installé, pour avoir un chargement automatique (pour les utilisateurs non nomade), il faut taper pwmn depuis la ligne de commande Autocad, et cocher la case "chargement automatique avec acaddoc.lsp".

Autocad 2010 à 2011, Windows 32 bits

Pour ces version, l’installation est entièrement automatisée, mais en l’absence de VBA, certaines fonctionnalités de PowerClic manquent, et surtout certaines informations sur le déroulement de l’installation car tout n'a pas encore été remplacé par .Net.

Autocad 2012 à 2013, Windows 32 bits

Sous Autocad 2012 et 2013, le passage à .Net 4.0 empêche les applications de se charger avec la version originale du fichier acad.exe.config.

Au chargement de PowerClic.dll, vous avez un message qui commence par : "Cannot load assembly. Error details: System.IO.FileLoadException: ..."

Voir l'article : Throught the interface


Pour pouvoir charger PowerClic.dll, il faut modifier le fichier acad.exe.config vous pouvez après avoir sauvegardé le fichier original, remplacer votre fichier avec ceux fournis avec PowerClic :

  • acad.exe.config pour Autocad 2012
  • acad.exe.config.2013 pour Autocad 2013



Le fichier acad.exe.config se trouve dans le même répertoire que acad.exe
Il faut donc faire une recherche dans le répertoire programmes.


Sinon vous pouvez éditer le fichier existant, pour qu'il ait ce contenu dans la section runtime :

<runtime>

<loadFromRemoteSources enabled="true"/>

Dans tous les cas, il faut sauvegarder votre fichier original !




Autocad pour Windows 64 bits

 

Sur les plate-formes x64, l'applicatif PowerClic.exe ne fonctionne plus, car le système lui interdit l'accès à certaines infos de la base de données.



Installation sur les plateformes x64


Il faut passer par une installation semi-manuelle :

Sous Windows, lancez PowerClicSetup.exe:
Après un certain nombre de questions, il installe PowerClic dans le répertoire de votre choix puis affiche une fenêtre MsDos (noire)
C'est à ce moment que l'installation automatique s'arrête: Pour poursuivre :
Fermer la fenêtre MsDos
Lancez Autocad.
Avec Autocad, ouvrez le dessin pwr_clic.dwg, dans le répertoire d'installation de PowerClic.
Depuis la ligne de commande d'Autocad, tapez la commande "script", et choisissez le fichier PowerClicSetupManuel.scr:

 


Si le fichier Acaddoc.lsp est déjà présent, il sera modifié pour ajouter PowerClic :




Si le fichier Acaddoc.lsp est absent il sera créé :

 


Une fois le script exécuté, l'installation est terminée, PowerClic se chargera automatiquement lors de l'ouverture de chaque dessin.



Liste des Plug-In PowerClic

 

Les Plug-In PowerClic sont des commandes qui s’exécutent sur le jeu de sélection retourné par PowerClic.

La liste des plug-ins disponibles est contextuelle par rapport à l’entité source.

Ci-dessus un exemple de choix du plug-in « calculate_area » sur un jeu de sélection de polygones à 5 cotés.

Listes des fonctions

 

+-_NUMERIC_VALUE

+-_NUMERIC_VALUE applique un changement de numerotation par addition ou soustraction [ none ]

 

3D_ROTATE_X

3D_ROTATE_X rotation individuelle pour aligner avec le scu [ none ]

 

3D_ROTATE_Y

3D_ROTATE_Y rotation individuelle pour aligner avec le scu [ none ]

 

ALIGN_ATTRIB2VIEWPORT

ALIGN_ATTRIB2VIEWPORT définit les attributs sur le même calque que le bloc [ none ]

 

ALL_SAME_SCALE

ALL_SAME_SCALE uniformise l'echelle d'une selection d'entité - standardize scale of a selection of entities. [ none ]

 

ALL_SAME_SIZE

ALL_SAME_SIZE uniformise la taille d'une selection d'entité - standardize size of a selection of entities. [ none ]

 

ATTDEF2TEXT

ATTDEF2TEXT transforme une etiquette attdef en texte [ none ]

 

ATTRIB_COMME_COVADIS

ATTRIB_COMME_COVADIS "définit les attributs dans les claque topomat, topoalt, topocod" [ none ]

 

ATTRIB_SUFFIX_PREFIX

ATTRIB_SUFFIX_PREFIX Ajout d'un suffixe et d'un prefixe [ none ]

 

ATTRIB_VISIBLE

ATTRIB_VISIBLE rend les attribut de type visibles [ none ]

 

ATTRIB2SAMELAYER

ATTRIB2SAMELAYER définit les attributs sur le même calque que le bloc [ none ]

 

ATTRIB2SAMELAYERTHANATTDEF

ATTRIB2SAMELAYERTHANATTDEF définit les attributs sur le même calque que le bloc [ none ]

 

BLOC_REPORT

BLOC_REPORT Affiche un rapport sur les nom de blocs de la sélection [ none ]

 

BLOC2ANOTHER_BLOC

BLOC2ANOTHER_BLOC insere un bloc à la même place qu'un autre bloc [ none ]

 

C:MPARCOURIRZP

C:MPARCOURIRZP fait un zoom sur l'entité précédente partir du menu [ none ]

 

C:MPARCOURIRZS

C:MPARCOURIRZS fait un zoom sur l'entité suivante à partir du menu [ none ]

 

C:Z-

C:Z- fait un zoom sur l'entité précédente [ none ]

 

C:Z+

C:Z+ fait un zoom sur l'entité suivante [ none ]

 

C:ZOOMZONE

C:ZOOMZONE prépare une série de zoom sur un zone rectangulaire [ none ]

 

CALCULATE_AREA

CALCULATE_AREA Addition of entities aera [ none ]

 

CALCULATE_CURVE_LENGTH

CALCULATE_CURVE_LENGTH Addition of curved entities length [ none ]

 

CALCULATE_STRAIGHT_LENGTH

CALCULATE_STRAIGHT_LENGTH Addition of straight entities length [ none ]

 

CALQUE_REPORT

CALQUE_REPORT Affiche un rapport sur les calques ou sont placées ces entitées [ none ]

 

CALQUE_SUFFIX_DEPUIS_ATTRIB

CALQUE_SUFFIX_DEPUIS_ATTRIB Ajoute un suffixe au calque correpondant à la valeur de l'attribut [ none ]

 

CHANGE_ATTRIB_FROM_Z

CHANGE_ATTRIB_FROM_Z change l'etiquette z d'un bloc a partir de sa hauteur [ none ]

 

CHANGE_PSTYLE

CHANGE_PSTYLE Change l'epaisseur et le style de tracé des attributs [ none ]

 

CHANGE_Z_FROM_ATTRIB

CHANGE_Z_FROM_ATTRIB change la hauteur d'un bloc a partir de la valeur d'une de ses etiquettes [ none ]

 

CHANGE_Z_FROM_NODAL

CHANGE_Z_FROM_NODAL place la valeur z à l'altitude des nodaux situés en dessous [ none ]

 

CHANGE_Z_TO_ZERO

CHANGE_Z_TO_ZERO place la valeur z à zéro des blocs [ none ]

 

CHEVAUCHEMENT_MARQUE

CHEVAUCHEMENT_MARQUE recherche et marque les chevauchement [ none ]

 

CHEVAUCHEMENT_SUPPRIME

CHEVAUCHEMENT_SUPPRIME recherche et marque les chevauchement [ none ]

 

CONVERT&JOIN2PLINE

CONVERT&JOIN2PLINE Joint arc et lignes sous forme de polyligne [ none ]

 

CONVERT_TO_2DPLINE

CONVERT_TO_2DPLINE convertie polylignes 3d en poly 2d efface l'original - convert 3d pline to 2d pline [ none ]

 

CONVERT_TO_NEW_2DPLINE

CONVERT_TO_NEW_2DPLINE convertie polylignes 3d en poly 2d - convert 3d pline to 2d pline [ none ]

 

CONVERT2MTEXT

CONVERT2MTEXT transforme les testes en Mtext [ none ]

 

CONVERTOSPLINE

CONVERTOSPLINE convertie polylignes lissée en spline - convert pline to spline [ none ]

 

COPY2OTHERLAYER

COPY2OTHERLAYER copie les entités selectionnées dans un autre calque [ none ]

 

CREER_CONTOUR

CREER_CONTOUR recrée les contours de hachure [ none ]

 

CROSSENTITYZOOM

CROSSENTITYZOOM zoom succesifs sur une selection d'entité [ none ]

 

CROSSSTRINGZOOM

CROSSSTRINGZOOM recherche une chaine de texte dans un jeu de selection, puis zoom succesifs [ none ]

 

DUPLICATE_AS_3DPOLY

DUPLICATE_AS_3DPOLY cree une multiligne sur une polyligne [ lsom ]

 

DUPLICATE_AS_MLINE

DUPLICATE_AS_MLINE cree une multiligne sur une polyligne [ lsom ]

 

DUPLICATE_AS_MPOLYGON

DUPLICATE_AS_MPOLYGON cree une multiligne sur une polyligne [ lsom ]

 

DUPLICATE_AS_PLINE

DUPLICATE_AS_PLINE cree une multiligne sur une polyligne [ lsom ]

 

DUPLICATE_AS_SPLINE

DUPLICATE_AS_SPLINE cree une multiligne sur une polyligne [ lsom ]

 

ENT_MIRROR_Y

ENT_MIRROR_Y Miroir par rapport à l'axe y [ none ]

 

ENT_ROTATE

ENT_ROTATE change l'echelle globale d'une selection d'entité - change scale of a selection of entities. [ none ]

 

ENT_SCALE

ENT_SCALE change l'echelle globale d'une selection d'entité - change scale of a selection of entities. [ none ]

 

EXPLODE2TEXT

EXPLODE2TEXT décompose un mtext dans son calque d'origine [ none ]

 

EXPORT-CSV_NXYZ

EXPORT-CSV_NXYZ exporte les points d'une surface AEC au format numero x y z dans un csv [ none ]

 

EXPORT-TRIMBLE_NXYZ

EXPORT-TRIMBLE_NXYZ exporte un bloc au format numero x y z [ none ]

 

EXPORT_EXCEL_CSV

EXPORT_EXCEL_CSV exporte les attributs d'un bloc au format excel csv [ none ]

 

EXPORT_NXYZ_LEICA_OR_EXCEL

EXPORT_NXYZ_LEICA_OR_EXCEL exporte un bloc au format numero x y z [ none ]

 

EXPORT_NXYZCD_GEOBASE

EXPORT_NXYZCD_GEOBASE exporte un bloc au format numero x y z cd pour utilisation géobase [ none ]

 

EXPORT_NYXZ_TRIMBLE

EXPORT_NYXZ_TRIMBLE exporte un bloc au format numero y x z [ none ]

 

GLOBAL_ATTRIBUT_EDITION

GLOBAL_ATTRIBUT_EDITION lance une edition globale façon attedit [ none ]

 

HATCH_BY_LENGTH

HATCH_BY_LENGTH hachure les element fermés à partir d'une taille - hatch closed element according to their dimension [ none ]

 

HATCH_IT

HATCH_IT hachure les element fermés - hatch closed element [ none ]

 

INTERNAL_COLOR_BYLAYER

INTERNAL_COLOR_BYLAYER selection par une chaine de texte [ none ]

 

MARK_FLOATING_VERTEX

MARK_FLOATING_VERTEX Marque les sommets de polyligne qui ne sont en dehord d'un grille de précision [ none ]

 

MOVE_RELATIVE_TO_ANGLE

MOVE_RELATIVE_TO_ANGLE Deplace un bloc selon son angle - move an insert according to its rotation angle [ none ]

 

MOVE2THETOP

MOVE2THETOP passe par dessus les entités selectionnées (Draworder en dur) [ none ]

 

OFFSET_ALL

OFFSET_ALL decale toutes les polylignes [ none ]

 

PAMCAD_ETIQUETE

PAMCAD_ETIQUETE Etiquetage Pamcad séquentiel [ none ]

 

POINT_AT_INSERTION

POINT_AT_INSERTION inserre un point au point d'insertion [ none ]

 

POINT_ON_4DSOLID_CENTER

POINT_ON_4DSOLID_CENTER inserre un point au point d'insertion [ none ]

 

POINT_ON_EXTREMITY

POINT_ON_EXTREMITY inserre un point au point d'insertion [ none ]

 

POINT_ON_VERTEX

POINT_ON_VERTEX inserre un point sur chaque sommets [ none ]

 

POINT2BLOCK

POINT2BLOCK inserre un bloc à la place de points ou autre entité fournies par des géometres [ none ]

 

POINTTO3DPOLY

POINTTO3DPOLY Dessine une 3dpoly passant par chaque de points ou autre entité fournies par des géometres [ none ]

 

PW_WIP_ARROUND

PW_WIP_ARROUND cree un wiepout fragementé autour de ename [ ename ]

 

RANGE_SIZE_TO_ALL_SAME_SIZE

RANGE_SIZE_TO_ALL_SAME_SIZE uniformise la taille d'une selection d'entité - standardize size of a selection of entities. [ none ]

 

RETRANCHE_UNE_VALEUR

RETRANCHE_UNE_VALEUR applique un changement de numerotation par addition ou soustraction [ none ]

 

ROUND_SCALE_TO_LUPREC

ROUND_SCALE_TO_LUPREC arrondie la taille d'une selection d'entité ajustées à la valeur de LUPREC- round size of a selection of entities according to luprec. [ none ]

 

ROUND_TO_LUPREC

ROUND_TO_LUPREC arrondie la taille d'une selection d'entité ajustées à la valeur de LUPREC- round size of a selection of entities according to luprec. [ none ]

 

ROUND_WIDTH_TO_LUPREC_

ROUND_WIDTH_TO_LUPREC_ arrondie la taille d'une selection d'entité ajustées à la valeur de LUPREC- round size of a selection of entities according to luprec. [ none ]

 

SAME_LTSCALE_THAN_WEIGHT

SAME_LTSCALE_THAN_WEIGHT force entities ltscale to their weight value [ none ]

 

SAME_LTSCALE_THAN_WIDTH

SAME_LTSCALE_THAN_WIDTH force entities ltscale to their width value [ none ]

 

SCALE_WIDTH

SCALE_WIDTH arrondie la taille d'une selection d'entité ajustées à la valeur de LUPREC- round size of a selection of entities according to luprec. [ none ]

 

SELECT_3DFACE_BY_Z

SELECT_3DFACE_BY_Z inserre un bloc à la place de points ou autre entité fournies par des géometres [ none ]

 

SELECT_BY_AREA

SELECT_BY_AREA sélectionne les element fermés à partir d'une surface - select closed element according to their area [ none ]

 

SELECT_BY_ATTRIB

SELECT_BY_ATTRIB change la hauteur d'un bloc a partir de la valeur d'une de ses etiquettes [ none ]

 

SELECT_BY_LENGTH

SELECT_BY_LENGTH sélectionne les element fermés à partir d'une taille - select closed element according to their dimension [ none ]

 

SELECT_BY_STRING

SELECT_BY_STRING selection par une chaine de texte [ none ]

 

SELECT_BY_Z

SELECT_BY_Z inserre un bloc à la place de points ou autre entité fournies par des géometres [ none ]

 

SELECT_ENTITY_FENCE

SELECT_ENTITY_FENCE selection par trajet - select with fence [ none ]

 

SELECT_INSIDE

SELECT_INSIDE selection par les elements fermés - select with closed elements [ none ]

 

SELECT_INSIDE_BOUDING_BOX

SELECT_INSIDE_BOUDING_BOX selection par les elements fermés - select with closed elements [ none ]

 

SELECT_INTEGERS

SELECT_INTEGERS selection des textes s'ils représentenst un entier [ none ]

 

SHOWBADDIM

SHOWBADDIM Montre les cotes forcées - show forced dim. [ none ]

 

SUFFIX_PREFIX

SUFFIX_PREFIX Ajout d'un suffixe et d'un prefixe [ none ]

 

TEXTWIPOUT

TEXTWIPOUT detourer un texte - TEXTWIPOUT [ none ]

 

TXTREPORT

TXTREPORT exporter le texte selectionné dans un fichier - export selected text into a file [ none ]

 

TXTREPORT_CSV

TXTREPORT_CSV exporter le texte selectionné dans un fichier au forma CSV - export selected text into a CSV file [ none ]

 

WEIGHT2WIDTH

WEIGHT2WIDTH convert plot weight to pline width [ none ]

 

WIDTH2WEIGHT

WIDTH2WEIGHT convert pline width to plot weight [ none ]

 

WIPEOUT_OBJECT

WIPEOUT_OBJECT chainage wipeoutet draworder pour blocs et formes [ none ]

 

WRITEDXFVALUE

WRITEDXFVALUE créee une annotation basée sur un code dxf [ none ]

 

G-EAUX

 

 

Partager cet article
Repost0
28 mars 2013 4 28 /03 /mars /2013 14:26
Coordonnées géographiques et lenteur d’affichage 3d

 

Problématique

La lenteur d’affichage 3d m’est tombée dessus du passage d’Autocad Map 2002 à Autocad Map 2006.

Depuis, optimiser la vitesse d’affichage d’Autocad est devenu un souci constant.

Lors d’une discussion sur ce sujet, c’est cette réponse sur cadXp qui m’a mis la puce à l’oreille : C’est également à cette époque que l’emploi de coordonnées Lambert  c’est généralisé.

Dès lors, j’ai eu la curiosité de vérifier ce comportement, en faisant des tests manuels, sur un fichier type.

Protocole du test

J’ai déjà beaucoup travaillé sur les benchmark (voir cet article), et ma conclusion et qu’ils donnent des résultats inexploitables, car le test peut défiler sans que les entités soient régénérées.

Je prends le parti d’utiliser un dessin typique de ceux que j’utilise, dans les conditions ou je les utilise, c'est-à-dire la visualisation en filaire 2d du modelage des MNT fait avec Covadis.

Les tests sont donc manuels, non chronométrables, l’appréciation du résultat étant basée sur l’observation

Configuration utilisée

Configuration de l'ordinateur

Ordinateur : Station HP Z400

Windows 7 pro 64

Configuration Autocad

 

Autocad :  Civil 3d 2012, ACADVER = "18.2s (LMS Tech)"

Configuration 3d :

-----------------------------

Vitesse du processeur: 3.1 GHz

RAM                  : 12271 Mo

Périphérique 3D

---------------

Nom                  : NVIDIA Quadro 2000

Fabricant            : NVIDIA

Microprocesseur      : Quadro 2000

Mémoire              : 2762 MB

Pilote               : 9.18.0013.697

Pilote actuel de l'application:       acaddm10.hdi

Etat de l'effet actuel:

-----------------------

Performances 3D améliorées:   Disponible et actif

Affichage continu:            Disponible et inactif

Shader matériel de Gooch:              Disponible et utilise le matériel

Eclairage par pixel:        Disponible et actif

Affichage total des ombres:       Disponible et actif

Compression de texture:       Disponible et inactif

Effets de matériau avancés: Disponible et actif

Premier test : Dessin 2d/3d en Lambert RGFCC45

 

J’ouvre un dessin type et je le  garde tel quel :

 

 

capture 1

Figure 1. Un dessin type, avec un MNT, du 2D et des coordonnées en Lambert CC45

 

Je lance la commande orbite libre, après au moins 10 secondes d’attente, je commence une rotation, très rapidement, la dégradation « cube »

capture 2

Figure 2: Les textes deviennent des rectangles, les objets 3d des cubes

Deuxième test : Dessin purement 3d en Lambert RGFCC45.

Je supprime complètement toutes les entités 2d, et je relance la commande orbite libre.

Le temps d’attente est réduit, l’affichage reste très fluide, mon MNT tourne sans dégradation et  sans saccades :

capture 3

Figure 3: Orbite libre avec les seules entités 3D du dessin

Troisième test : Entités 2d gelées, coordonnées Lambert RGFCC45.

Je gèle l’affichage de toutes les entités 2d, et je relance la commande orbite libre.

Après au moins 10 secondes d’attente, je commence une rotation, la dégradation est totale : je passe directement d’un affichage à l’autre : dessin complet, et 2 petits cubes qui correspondent à des solides 3d. La rotation est fluide, mais inexploitable car mon dessin disparaît !

 

capture 4

Figure 4: Affichage non dégradé lors de pauses dans la rotation

 

 

 

       
    capture 5
 
 

Figure 5: Affichage totalement dégradé lors de la rotation 

 

   
   


 
Quatrième test : Dessin 2d/3d en Lambert, SCU redéfini au centre

Je voudrai savoir si le SCU a une influence

Je dégèle l’affichage de toutes les entités 2d, je positionne le SCU au centre de la vue et je relance la commande orbite libre.

Le résultat est strictement le même que dans le test numéro 1

Cinquième test : Dessin 2d/3d en Lambert, SCU redéfini au centre, limites du dessin définies

Je voudrai savoir si les limites du dessin ont  une influence

Je définis les limites du dessin autour de l’affichage

Le résultat est strictement le même que dans le test précédent.

Sixième test : Dessin 2d/3d en local, SCU général

Maintenant, j’aimerai vérifier la théorie de LoveCraft et LeCrabe, à savoir l’influence des coordonnées Lambert

Je translate donc l’ensemble des entités (2d/3d) vers le point 0 du SCU général

Le résultat est strictement le même que dans le test numéro 1

Je me dis que la mémoire d’Autocad est perturbée par cette translation,  je sauvegarde le dessin et je le ferme, puis l’ouvre à nouveau, ça ne change rien

 

Dernières vérifications avant de conclure …

Je suis surpris de ne pas avoir le même résultat que mes collègues de cadXp, et je voudrai faire une dernière vérification. Souvent, lorsqu’on a un dessin en Lambert, on a également des entités qui se promènent dans les coordonnées 0,0 (en général, le chemin d’un Xref non trouvée)

Je refais un test en coordonnées Lambert, mais avec une ligne partant de 0,0 au centre de mes entités.

Je veux voir si je constate un gros ralentissement par rapport au test N°1.

Ce n’est pas le cas, il n’y a aucun changement.

Je fais également des tests en utilisant d’autres styles visuels, conceptuel, masqué, le comportement ne change pas

Puis il me vient une idée : puisque ce sont les entités 2d qui gênent, et que dans  la pratique il est assez difficile d’avoir un dessin purement 3d, j’aimerai vérifier le fonctionnement avec une xref 2d chargée/déchargée.

Je reprends donc mon dessin, je fais un Wbloc des entités 2d pour les placer dans une Xref.

Mon dessin est en coordonnées Lambert

J’en profite pour refaire une orbite avec les entités restantes (comme au deuxième test) : Et là, incroyable, le résultat est complètement différent : la dégradation est totale, avec la disparition de toutes les entités,  sauf pour les solides 3d qui passent en mode cube.

Je suis en plein désarroi, et je retente la solution cadXp (6eme test),  passer en mode local :

Déplacement de toutes les entités vers les coordonnées 0,0  orbite 3d, et là :

Fluidité totale de la rotation, dégradation imperceptible

Entre les séries de test, j’ai simplement  lancé  la commande « _3dconfig », qui a planté mon Autocad … J’ai quitté Autocad, puis Windows, et j’ai relancé, les résultats sont restés les mêmes

 

Septième test : Dessin 2d sous forme d’xref/ entités 3d coordonnées locales.

Je fais donc le test avec des coordonnées locales (autour de 0,0,0 ) et les entités 2d dans une xref chargée.

La dégradation est la même que dans le 1er test.

Huitième test : Dessin 2d sous forme d’xref déchargée / entités 3d coordonnées locales.

Dans cette configuration, la dégradation est imperceptible, on a la même fluidité que si le dessin ne comportait que les entités 3d. J’ai également essayé la configuration « xref chargée, calques gelés » on a le même résultat, ce qui contredit le troisième test !

 

 

 

Conclusion.

La première série de tests donne des résultats complètement contradictoires avec la deuxième série.

Peut-être ai-je fait une erreur dans mon protocole, puisque je ne suis pas arrivé à reproduire ces résultats, mais c’est pourtant en début de test que j’ai été le plus rigoureux …

Il semble assez constant que les coordonnées locales sont favorables à la fluidité, mais la présence d’entités 2d est également un handicap

Les geler ne suffit pas, c’aurait été pourtant la solution la plus simple, donc il faut les mettre autant que ce peut dans une xref, que l’on gèle lorsque l’on veut travailler en 3D

Pour les coordonnées, il ne semble pas y avoir de méthode utilisable : les SCU sont inefficaces, seul le SCU général est pris en considération.

La technique des translations me semble un peu trop lourde, et on ne peut pas tromper les outils de reprojection de Map avec des artifices comme « base » ou « insbase »

Le MNT que j’ai utilisé est très petit, peut être que sur un dessin plus vaste,  j’aurais d’autres résultats,  je joints mon fichier pour que chacun puisse renouveler cette expérience et faire part de ses observations.

 

 

 

g-eaux

 

 

Partager cet article
Repost0
25 janvier 2013 5 25 /01 /janvier /2013 09:23

Déverrouillage de fichiers PDF

 

Problématique

 

Certains fichiers PDF ont la mauvaise idée d’être verrouillés par un mot de passe.

Du coup, on ne peut pas faire de copie (ctrl+c) de leur contenu vers un autre fichier :

 

Une-erreur-est-survenue-lors-de-la-copie-dans-le-presse-pap.png

Une erreur est survenue lors de la copie dans le presse-papiers

 

On ne peut pas extraire leur contenu texte avec gsview, on ne peut pas les ouvrir avec LibreOffice ou oOo.

C’est souvent très agaçant, surtout quand on a précisément besoin de leur contenu, par exemple quand un PDF contient des codifications de cahier des charges genre « H_11_1_0 » très faciles à recopier sans se tromper …

J’ai d’abord essayé d’imprimer le PDF au format PDF avec PdfCréator :

Ça mouline, ça a l’air de marcher … le PDF s’ouvre, 2 pages vides avec le petit message :

 

ERROR: undefined

OFFENDING COMMAND: eexec

STACK:

/quit

-dictionary-

-mark

La méthode logicielle

Une petite recherche « déverrouiller PDF », « déverrouiller un document PDF protégé par un mot de passe » ou « supprimer les restrictions PDF » vous amène directement à ce genre d’utilitaire :

pdf-unlocker

Ce logiciel se contente de tester un par un tous les mots de passe.

Sur les deux fichiers que j’ai tenté de déverrouiller par cette voie, je pourrai peut être attendre encore le résultat … si le mot de passe est « tu l’as bien cherché » achetez-vous un super calculateur …

La méthode maison …

Au lieu d’imprimer en PDF, j’imprime avec Microsoft XPS document writer .

Là pas de problème, l’impression marche, et le résultat est fidèle à l’original.

Mais si vous faites un copier/coller depuis la visionneuse XPS, vous aurez la désagréable surprise d’obtenir un charabia infect : Mots dans le désordre, coupés, accolés sans logique.

Mais si vous réimprimez le document avec PdfCreator, l’impression reste fidèle, et miracle, ouvert avec acrobat, le fichier pdf est déverrouillé, les copier/coller fonctionnent, même mieux en ce qui concerne les tableaux !

 

Petite limitation

Le PDF obtenu n’est qu’un fichier RTF, adieux signets, table des matières, sommaires et hyperliens.

 

Pour les Autocadiens

Il faut savoir que le format XPS est presque le même que le format DWF.

En fait, on peut lire des documents DWF avec Xps viewer

 

 

Ajouté le 04 juin 2014

Je suis tombé sur un document récalcitrant. J’ai donc décidé d’ajouter  au fur et à mesure les propriétés des documents qui fonctionnent et ceux qui ne fonctionnent pas :

 

Le procédé marche très bien avec un document :

Outil de conversion PDF: Acrobat Distiller 5.0.5 (Windows)

Version PDF : 1.4 (Acrobat 5g)

 

Le procédé ne marche pas avec un document : 

Outil de conversion PDF : GNU Ghostscript 7.07

Version PDF : 1.2 (Acrobat 3g)

 

Ajouté le 19 mars 2015

Il arrive que dans certains documents, la séquence ctrl+c, ctrl+v ne déclenche aucun message d'erreur, mais la copie échoue: C'est le cas avec le fichier suivant.

Mais la procédure a parfaitement fonctionnée

 

Le procédé marche très bien avec un document :

Outil de conversion PDF Microsoft® Word 2010
Version PDF : 1.5 (Acrobat6.x)

 

 

 

 

 

Ajouté le 26 avril 2016

Les Kbis d'Infogreffe sont bien verrouillés, la séquence ctrl+c, ctrl+v ne déclenche aucun message d'erreur, mais la copie échoue: Mais la procédure a parfaitement fonctionnée

Le procédé marche très bien avec un document :

Outil de conversion PDF: Apache FOP Version 1.1

Version PDF: 1.4 (Acrobat 5.x)

 

Ajouté le 03 novembre 2016

Rien a faire avec celui là, il s'imprime façon image

Le procédé ne marche pas avec un document :

Outil de conversion PDF: Acrobat Distiller 7.0.5 Mindows)

Version PDF: 1.6 (Acrobat 7.x)

g-eaux

Partager cet article
Repost0
10 janvier 2013 4 10 /01 /janvier /2013 17:35

Lecture de fichiers XML en lisp

 

Les fichiers XML sont partout, bien que n’ayant pas tous l’extension XML.

Par exemple, Google Earth utilise des fichiers KML, qu’il peut être intéressant de savoir lire, sans passer par un autre programme.

Les fichiers XML sont des fichiers texte, c’est leur grand intérêt, on peut les lire avec un simple éditeur genre Notepad.

Sous lisp, on pourrait donc les lire directement avec un read-line, ligne par ligne, et avec une patience démoniaque, traquer les balises ouvrantes et fermantes, les mots clefs …

N’étant ni patient ni démoniaque, je préfère utiliser la bibliothèque MSXML DOM

C’est qui ce DOM?

DOM = Document Object Model, c’est une librairie qui lit le fichier XML à votre place, et qui vous le met à disposition sous forme d’arborescence, avec des tiroirs et des classeurs bien rangés.

Ca simplifie tout, et tous les XML deviennent aussi simples que des fichiers Excel.

Voici l’aide Microsoft sur cette œuvre majeure : MSXML DOM référence

Mais pour commencer, j’ai préféré ce tuto bien plus civilisé : Visual Basic 6.0 et le format XML

Il y a là-dedans tout ce qu’il faut pour débuter, en VB, mais comme Lisp sait travailler avec COM, nous n’aurons aucune limitation.

De quoi on a besoin :

MSXML DOM est présent sur toutes les machines Windows, pas besoin de l’installer

On ne saurait se passer de l’XML Notepad 2007 qui nous rendra bien service

Mais il faudra aussi disposer d’un bon éditeur, Notepad++ étant pour moi le meilleur actuellement

XML Notepad permet de visualiser les nœuds, les attributs, les déclarations sous forme « graphique ». Mais il intègre une capacité d’interprétation du fichier XML qui peut vous cacher des parties qu’il a volontairement ignoré. C’est pourquoi Notepad++ reste utile, car il permet de visualiser le texte intégral, et d’ainsi comprendre certaines subtilités.

Il vous faudra également installer PowerClic pour que les exemples fonctionnent

 

Comment utiliser DOM :

 

Un coup d’œil à MSXML DOM référence et vous constaterez que c’est une Hydre, et pour pas grand-chose. Les auteurs ont créé des propriétés à la place de méthodes et vice-versa. Beaucoup de méthode et propriétés sont redondantes, ce n’est pas un modèle de rationalité.

Heureusement, on s’en sortira avec un minimum de fonctions.

La logique, c’est qu’il ne faut pas chercher à lire du XML comme on le voit dans Notepad++, mais plutôt comme il s’affiche dans  XML Notepad :

On lira donc des nœuds et des attributs, pas des chaines de caractère.

 

Le Kit G-EAUX :

 

Il permet de faire les opérations de base, trouver un nœud ou un attribut par son nom, lister les descendant d’un nœud, etc.

Il fournit également des primitives pour la lecture des fichiers MS Excel XML 2003

Pour illustrer les possibilités, j’ai créé une petite commande,  XMLEXPLORE, qui permet d’afficher l’arborescence d’un fichier XML

 

C:XMLEXPLORE charge un fichier xml dans le but de l'explorer manuellement

      [ none ]

C:FREEXML libère le fichier xml après une erreur [ none ]

EXPLORXMLDOM exploration récursive  d'un noeud père  [  fathNod  ]

PW_XMLCOLLEC->LIST liste de tous les éléments d’une collection [ collec ]

PW_XMLDOC_GETNODEBYNAME retourne le noeud par sélection par nom

      [ xmlDoc tagname ]

PW_XMLLISTATTRIBUTES liste de tous les attributs  d'un noeud père

      [  fathNod  ]

PW_XMLLISTCHILDNODES liste de tous les noeuds child d'un noeud père

      [  fathNod  ]

PW_XMLNODE_GETNODEBYNAME retourne le noeud par sélection par nom

      [ xmlNod tagname ]

PW_XMLSGETONEATT retourne  un objet attribut par son nom [  xmlnod attName ]

PW_XMLSLISTALLCELL liste de toutes les cell d'une row  [  rownod ]

PW_XMLSLISTALLCHILDSBYNAME liste de toutes les childs d’un nœud ayant le nom childname

      [   Nod childname ]

PW_XMLSLISTALLROW liste de toutes les row d'une table  [  tablenod ]

PW_XMLSLISTNODEBYNAME liste de tous les nœuds child d'un noeud père par nom

      [  fathNod NodName ]

PW_XMLSREADALLCELLS lit toutes  les cellules, comme pw_charger_ini      [ tblnod  ]

PW_XMLSREADONEATT lit un attribut sélectionné par son nom      [  xmlnod attName ]

PW_XMLSREADONECELL lit une  cellule  [  cellnod ]

PW_XMLTRTLVALCELL traite la liste des valeurs de cellule lues, en fonction de

       la valeur index [ lvalcell ]

PW_XMLVAL2TYPE transforme la valeur texte xml en son type spécifié      [  val typ  ]

 

 

Le Code :

 
;;**************************************************************************
;; LECTURE FICHIERS XML
;;
;;**************************************************************************
;;**************************************************************************
;;§/xml/retourne le noeud par sélection par nom/xmlNod tagname
;;xmlnod = IXMLDOMNode
;;retourne soit nil, soit un IXMLDOMNode

(defun pw_xmlnode_getNodeByName (xmlnod tagname
                 / finit noeud chlnd res i nb)
(if (vlax-invoke-method xmlnod 'HasChildNodes)
(progn
(setq chlnd (vlax-get-property xmlnod 'childNodes))

(setq nb (vlax-get-property chlnd 'length))
(setq i 0)
(while (and (not finit) (< i nb))
    (setq noeud (vlax-get-property chlnd 'item i))
    (setq i (+ 1 i))
    (if (= (vlax-get-property noeud 'Basename) tagname) ;_Tagname sans le ss: ex : ss:Worksheet->Worksheet
     (setq finit T
        res noeud)
    )
)
)
)
res
)



;;**************************************************************************
;;§/xml/lit une cellule / cellnod
;;retourne '("val" idx)
;;val peut etre une chaine, ou nil ou un nombre
;;idx peut etre
;; - soit nil (cellules qui se suivent)
;; - soit un integer (cellules contennant des datas qui viennent après un série de celulles vides)
;; - soit un integre de valeur 256 (cellule vides qui est ajouté à chaque ligne, ne contient jamais de data)

(defun pw_xmlsReadOneCell ( cellnod / att sty typ txt )
(setq attcell (vlax-get-property cellnod 'Attributes))
(if (setq idx (vlax-invoke-method attcell 'getNamedItem "ss:Index"))
(setq tmp2 idx
     idx (vlax-get-property idx 'value)
     idx (vlax-variant-value idx))
)

(if (setq data (pw_xmlnode_getNodeByName cellnod "Data"))
(progn
(setq att (vlax-get-property data 'Attributes))
(setq sty (vlax-invoke-method att 'getNamedItem "ss:Type"))

(setq typ (vlax-get-property sty 'value))
(setq typ (vlax-variant-value typ))
;(print typ)
(setq txt (vlax-get-property data 'text))
;(print txt)
(list (pw_xmlVal2Type txt typ) idx)

)
)
)
;;**************************************************************************
;;§/xml/lit un attribut sélectionné par son nom / xmlnod attName
;;ss:Name

(defun pw_xmlsReadOneAtt ( xmlnod attName / atts att val )
(if (setq atts (vlax-get-property xmlnod 'Attributes))
(progn
(setq att (vlax-invoke-method atts 'getNamedItem attName))
(setq val (vlax-get-property att 'value))
(vlax-variant-value val)
)
)
)
;;**************************************************************************
;;§/xml/retourne un objet attribut par son nom/ xmlnod attName
;;ss:Name

(defun pw_xmlsgetOneAtt ( xmlnod attName / atts att )
(if (setq atts (vlax-get-property xmlnod 'Attributes))
(setq att (vlax-invoke-method atts 'getNamedItem attName))
)
)

;;**************************************************************************
;;§/xml/transforme la valeur texte xml en son type spécifié / val typ

(defun pw_xmlVal2Type ( val typ / )
(cond
((= typ "String")
val
)
((= typ "Number")
(read val)
)
)
)

;;**************************************************************************
;;§/xml/lit toutes les cellules, comme pw_charger_ini/tblnod

(defun pw_xmlsReadAllCells (tblnod / lres i)
(setq i 0)
(setq lrow (pw_xmlsListAllRow tblnod))
(foreach row lrow
;;(print i)
(if (setq lcell (pw_xmlsListAllCell row))
(progn
    (setq lcell (mapcar 'pw_xmlsReadOneCell lcell))
    ;;(setq lcell (pw_supp_all 'nil lcell))
    (setq lcell (pw_xmlTrtLvalCell lcell))
    (setq lcell (mapcar 'pw_nil_t lcell))
    (if (not (and (PW_EGAL_LIST lcell)
         (member "" lcell)
         )
     ) ;_c'est une ligne vide dans le fichier xml
     (setq lres (cons lcell lres))
    )
)
)

(setq i (+ 1 i))
)
(reverse lres)
)


;;**************************************************************************
;;§/xml/traite la liste des valeurs de celulle lues, en fonction de la valeurs index /lvalcell
;;lvacell '((idx1 lvalcell1) ... (idxn lvalcelln)

(defun pw_xmlTrtLvalCell (lvalcell / cnt lres id val)
(setq cnt 1)
(foreach l lvalcell
(setq val (car l)
     id (cadr l))
(cond ((= nil id);_cette celulle est la 1ère ou suit les autres
     (setq lres (cons val lres))
     (setq cnt (+ 1 cnt))
     )
     ((and (= 256 id)(not val));_cette celulle est la dernière et ne contient pas de données
     nil
     )
     ((numberp (setq id (pw_to_type id)));_cette celulle est une celulle contennat une valeur, après une série de celulles vides
     (setq nb (- id cnt))
     (repeat nb (setq lres (cons "" lres)))
     (setq lres (cons val lres))
     (setq cnt (+ 1 id))
     )
     )
    
)
(reverse lres)

)

;;**************************************************************************
;;§/xml/liste de toutes les childs d'une noaud ayant le nom childname / Nod childname

(defun pw_xmlsListAllChildsByname ( Nod childname / lrow i noeud nb)

(if (vlax-invoke-method Nod 'HasChildNodes)
(progn
(setq chlnd (vlax-get-property Nod 'childNodes))

(setq nb (vlax-get-property chlnd 'length))
(setq i 0)
(while (< i nb)
    (setq noeud (vlax-get-property chlnd 'item i))
    (setq i (+ 1 i))
    (if (= (vlax-get-property noeud 'Basename) childname)
     (setq lrow (cons noeud lrow))
    )
)
)
)
(reverse lrow)
)
;;**************************************************************************
;;§/xml/liste de toutes les row d'une table / tablenod

(defun pw_xmlsListAllRow ( tablenod / lrow i nb)

(if (vlax-invoke-method tablenod 'HasChildNodes)
(progn
(setq chlnd (vlax-get-property tablenod 'childNodes))

(setq nb (vlax-get-property chlnd 'length))
(setq i 0)
(while (< i nb)
    (setq noeud (vlax-get-property chlnd 'item i))
    (setq i (+ 1 i))
    (if (= (vlax-get-property noeud 'Basename) "Row")
     (setq lrow (cons noeud lrow))
    )
)
)
)
(reverse lrow)
)

;;**************************************************************************
;;§/xml/liste de toutes les cell d'une row / rownod

(defun pw_xmlsListAllCell ( rownod / lcell noeud i nb)

(if (vlax-invoke-method rownod 'HasChildNodes)
(progn
(setq chlnd (vlax-get-property rownod 'childNodes))

(setq nb (vlax-get-property chlnd 'length))
(setq i 0)
(while (< i nb)
    (setq noeud (vlax-get-property chlnd 'item i))
    (setq i (+ 1 i))
    (if (= (vlax-get-property noeud 'Basename) "Cell")
     (setq lcell (cons noeud lcell))
    )
)
)
)
(reverse lcell)
)
;**************************************************************************
;;§/xml/liste de toutes les eléments d'une collection / collec

(defun pw_xmlCollec->List (collec / lcell noeud i nb)

(if collec
(progn
(setq nb (vlax-get-property collec 'length))
(setq i 0)
(while (< i nb)
    (setq noeud (vlax-get-property collec 'item i))
    (setq i (+ 1 i))
    (setq lcell (cons noeud lcell))
)

(reverse lcell)
)
)
)
;;*******************************************************************************
;;§/xml/liste de toutes les noeud child d'un noeud père par nom / fathNod NodName

(defun pw_xmlsListNodeByName ( fathNod NodName / lcell noeud chlnd nb i )

(if (vlax-invoke-method fathNod 'HasChildNodes)
(progn
(setq chlnd (vlax-get-property fathNod 'childNodes))

(setq nb (vlax-get-property chlnd 'length))
(setq i 0)
(while (< i nb)
    (setq noeud (vlax-get-property chlnd 'item i))
    (setq i (+ 1 i))
    (if (= (vlax-get-property noeud 'Basename) NodName)
     (setq lcell (cons noeud lcell))
    )
)
)
)
(reverse lcell)
)
;;*******************************************************************************
;;§/xml/liste de toutes les noeud child d'un noeud père / fathNod

(defun pw_xmlListChildNodes ( fathNod / chlnd )

(if (vlax-invoke-method fathNod 'HasChildNodes)
(progn
(setq chlnd (vlax-get-property fathNod 'childNodes))
(pw_xmlCollec->List chlnd)
)
)
)
;;*******************************************************************************
;;§/xml/liste de toutes les attributs d'un noeud père / fathNod

(defun pw_xmlListAttributes ( fathNod / chlnd )

(setq chlnd (vlax-get-property fathNod 'attributes))
(pw_xmlCollec->List chlnd)

)
;;*******************************************************************************
;;§/xml/exploration récursive d'un noeud père / fathNod

(defun explorxmldom ( fathNod level / noeud chlnd lnod lat)
(setq lat (pw_xmlListAttributes fathNod))
(foreach att lat
(repeat (* 2 level) (princ " "))
(princ "Attribut :")
(princ "\n")
(repeat (* 2 level) (princ " "))
;;(princ (vlax-get-property att 'Basename))
;;nodeName
(princ (vlax-get-property att 'nodeName))
(princ " Tp:")
(princ (vlax-get-property att 'nodeType))
(princ "\n")
)
(setq lnod (pw_xmlListChildNodes fathNod))
(foreach noeud lnod
(repeat (* 2 level) (princ "-"))
(princ "Noeud :")
(princ "\n")
(repeat (* 2 level) (princ " "))
(princ (vlax-get-property noeud 'Basename))
(princ " Tp:")
(princ (vlax-get-property noeud 'nodeType))
(princ "\n")
(princ " URL")
(princ (vlax-get-property noeud 'namespaceURI))
(princ "\n")
(explorxmldom noeud (+ 1 level))
)
)

;;**************************************************************************
;;§/xml/libère le fichier xml après une erreur/none
(defun c:freexml ()
(vlax-release-object xmldoc)
(setq xmldoc nil)
(vlax-release-object pw-xmldoc)
(setq pw-xmldoc nil)
)
;;**************************************************************************
;;§/xml/charge un fichier xml dans le but de l'explorer et d'afficher sa structure à l'écran /none

;;
(defun c:xmlExplore ( / doc )
(setq   fichier (getfiled "Fichier xml à explorer, extension quelconque : "
         ""
         "xml"
         4
     )
)
(setq xmldoc (vlax-create-object "MSXML2.DOMDocument"))
(vlax-invoke-method
    xmldoc
    'load
    fichier
)
(prompt "\nExplorer xmldoc")
;;currNode = xmlDoc.documentElement.firstChild;
(setq doc (vlax-get-property xmlDoc 'documentElement))
;;(setq 1st (vlax-get-property doc 'firstChild))
(princ "-")
(princ "Noeud :")
(princ "\n")
(princ " ")
(princ (vlax-get-property doc 'Basename))
(princ " Tp:")
(princ (vlax-get-property doc 'nodeType))
(princ "\n")
(princ " URL")
(princ (vlax-get-property doc 'namespaceURI))
(princ "\n")
(explorxmldom doc 1)
(princ)
)

  

 

 

g-eaux

 

Partager cet article
Repost0
7 décembre 2012 5 07 /12 /décembre /2012 16:34

Autocad Map : Incompatibilité des tables de données dans les dessins ouverts, Conflit de données d'objet

 

Si vous connaissez le message :

Incompatibilité des tables de données dans les dessins ouverts.

Paramètre: CLASSNAME Valeur: A-NO

Paramètre: APPLNAME Valeur: ad

Erreur: 786433 - Incompatibilité des tables de données dans les dessins ouverts.

Paramètre: ERRCODE; Valeur: 786433.
 

Vous serez intéressé par cet article

 

Diagnostic : Est-ce que c’est grave ?

Le problème vu par les utilisateurs :

 

Une recherche approfondie sur le forum Autocad Map montre que ce problème est connu depuis la version 2002
Mais au lieu d'avoir attiré l'attention des développeur Autodesk, il n'a fait qu'empirer, jusqu'à être une véritable problème, sans solution avec la 2010 et il est devenu infernal avec la 2012.
Ci joint un certain nombre de thread à ce propos, le dernier est intéressant, car Rakesh Rao (voir lien pour fonctions ADE), qui n'est pas un novice sous Map, avoue ne pas trouver de solution, et surtout note des dysfonctionnements aléatoires de certains programmes :


http://discussion.autodesk.com/forums/t … dID=223419
http://discussion.autodesk.com/forums/t … p;#6120232
http://discussion.autodesk.com/forums/t … mp;#893189
http://discussion.autodesk.com/forums/t … p;#4468629
http://discussion.autodesk.com/forums/t … p;#2288136

 

 

 

Il y a également quelqu’un qui a remarqué que lorsque Map a rencontré ce problème, il le trouve partout, sa mémoire est corrompue et il vaut mieux carrément quitter Windows ...
j'ai fait ce constat également.

Même une xref introuvable perturbe Map ... Il faut le savoir.
 

 

 

J’avais lancé ce sujet sur géorézo :

 

http://georezo.net/forum/viewtopic.php?id=67315

Le problème vu par Autodesk :

Le comportement de Map 3D en présence des XREF et de tables des données avec le même nom mais structure différente doit être considéré « as designed ». Ce control a été implémenté pour assurer la cohérence des données.

En gros, le bug dont vous souffrez est une fonctionnalité ! Qui vous protège de votre défaut bien connu, l’incohérence !

 

Donc on ne fait rien ?

Heureusement que si, car sinon, on ne pourrait plus travailler.

Solution 1 (principe) :

 

Dans tous les dessins :

-          Supprimer toutes les tables non utilisées (s’il y en a)

-          Renommer les tables :

Par exemple, le message d'erreur de map portait sur une table qui n'existe pas dans mon dessin : E-ACC
la table qui existe est E-ACCESS

Avec le menu map, j'ai renommé la table E-ACCESS en E-ACC

La j'ai eu la surprise de voir que la table E-ACCESS n'avait pas disparu, mais qu'elle cohabitait avec E-ACC.

Certaine entité avait soit l'une des tables, soit les 2.

Par un programme,

TABLE2OTHERTABLE j'ai copié le contenu de la table E-ACC vers E-ACCESS pour le objets qui n'avait pas la table E-ACCESS
j'ai supprimé la table E-ACC,
et le message d'erreur a disparu, et on peut a nouveau travailler.

 

Solution 2 (cas normal)

Dans tous les dessins :

-          Supprimer toutes les tables non utilisées (s’il y en a)

-          Si les xref sont trouvées, ouvrir une à une les xref, supprimer les tables non utilisées, et mettre à jour les tables si la xref contient les même tables que le dessin hôte : le moindre accent oublié dans la description d’un champ peut entrainer une erreur !

- détacher les xrefs non utilisée ou introuvables

Quitter Autocad et Windows

Relancer, le message doit disparaitre.

 

Solution 3 (cas sévères)

Dans tous les dessins :

-          Supprimer toutes les tables non utilisées (s’il y en a)

-          Si les xref sont trouvées, ouvrir une à une les xref, supprimer les tables non utilisées, et mettre à jour les tables si la xref contient les même tables que le dessin hôte : le moindre accent oublié dans la description d’un champ peut entrainer une erreur !

- détacher les xrefs non utilisée ou introuvables

Utiliser le lisp Xrelative qui est sur ce blog

 

Fermer le dessin, et déplacer le dessin d'un répertoire

Rouvrir le dessin (il n'aura plus d'xrefs)

 

Préfixer les tables

Utiliser le lisp :  Ajout_prefixe_tables (code en fin d’article)

Mettre un préfixe au choix, genre « MonPref_ »

Fermer le dessin

 

A ce stade, on peut avoir dans le dessin deux fois la table E-ACCESS :

-        E-ACCESS :

-        MonPref_E-ACCESS 

 

Le but de l'opération est de supprimer celle qui a le moins d'objets :

 

 

Rouvrir le dessin

Télécharger l’excellent programme d’Olivier Eckman : (Post du 16 Juin)

http://georezo.net/forum/viewtopic.php?pid=213740#p213740

 

Charger ObjectDataCS.dll (_netload votrechemin /ObjectDataCS.dll)

Taper mqselect, parcourir les tables et voir celles qui sont utilisées.

Pour chaque table en doublon,

Sélectionner celles qui ont le moins d'objets, 

 

TABLE2OTHERTABLE du jeu de sélection de la table source (qui sera supprimée) vers la table cible(qui sera gardée)

 

Effacer une à une les tables source avec cartes/données d'objet/définir les données d'objet

 

Lancer le lisp :Supprime_prefixe_tables

 

Fermer le dessin, et le remettre à son emplacement initial,

Commande Lisp  Xabsolus, et le dessin est propre

 

Précaution utiles :

Cet article s’adresse à des utilisateurs très confirmés d’Autocad map, débutants s’abstenir.

Avant de s’aventurer dans ce genre de traitement, on fait une sauvegarde de tous les fichiers que l’on veut traiter.

Si ça ne marche pas, ce n’est pas grave, mais si vous détruisez vos données, c’est autre chose.

Prérequis, articles à lire, programmes à utiliser :

Télécharger les lisps concernant Autocad Map (préfix AM) de 4D technologie :


http://www.4d-technologies.com/techcenter/

 

Installer PowerClic :

Installation et mise à jour de PowerClic pour Autocad

 

Récupérer les lisps pour les xrefs :

Changement de type de chemin pour les références externes

 

Puis placer les routines suivantes dans un fichier lisp, ex G-eaux_ADE_utils.lsp, et le charger.

Les routines lisps utiles

;********************************************************
;§**/ade/renome les tables avec un prefixe propre au dessins / none
(defun c:Ajout_Prefixe_tables ( / table tablelst)
(pw_setvar1 "CMDDIA" 0)
(if (vlax-ldata-get "NADIAA" "prefixe-table")
(Prompt "\nLes tables de ce dessins ont déjà un préfixe ! ")
(progn
(while (= "" (setq prefixe-table (getstring "\nPrefixes local pour les tables de ce dessin (code INSEE) + undescore")))
(Prompt "\nIncorrect, recommencez ! ")
)
(setq tablelst (AM_GETTABLELST))
(foreach table tablelst
;;;_adedefdata
;;;Table: [?/Supprimer/Modifier/Nouvelle/Renommer/Quitter]: R
;;;Table à renommer: E-ACCESS
;;;Nouveau nom de la table : O-ACCESS
;;;Table: [?/Supprimer/Modifier/Nouvelle/Renommer/Quitter]:
(command "_adedefdata" "_Rename" table (strcat prefixe-table table) "")
)
(vlax-ldata-put "NADIAA" "prefixe-table" prefixe-table )
)
)
(pw_setvar2 "CMDDIA" )
)

;;********************************************************
;§**/ade/supprime le prefixe de tables propre au dessins / none
(defun c:Supprime_Prefixe_tables ( / table tablelst)
(pw_setvar1 "CMDDIA" 0)
(if (not (setq prefixe-table (vlax-ldata-get "NADIAA" "prefixe-table")))
(Prompt "\nLes tables de ce dessins n'ont pas de préfixe ! ")
(progn
(setq tablelst (AM_GETTABLELST))
(foreach table tablelst
(setq newtable (vl-string-subst "" prefixe-table table ))
(if (= (strcase newtable)(strcase table))
    (prompt "\nTable sans préfixe")
;;;_adedefdata
;;;Table: [?/Supprimer/Modifier/Nouvelle/Renommer/Quitter]: R
;;;Table à renommer: E-ACCESS
;;;Nouveau nom de la table : O-ACCESS
;;;Table: [?/Supprimer/Modifier/Nouvelle/Renommer/Quitter]:
(command "_adedefdata" "_Rename" table newtable "")
)
)
(vlax-ldata-delete "NADIAA" "prefixe-table" )
)
)
(pw_setvar2 "CMDDIA" )
)
;*******************************************************************
;§/ade/efface toutes les tables d'un dessin/none
;
(defun c:Delete_all_table ()
(mapcar 'ade_oddeletetab (ade_odtablelist))
(prompt "\nToutes les tables detruites !")
)

;*******************************************************************
;§/ade/liste à l'écran toutes les tables d'un dessin/none
(defun c:tableliste ()
(foreach l (ade_odtablelist)
(print l)
(mapcar 'print (AM_GetTableFormat l))
)
)

*******************************************************************
;§/ade/ecrit, dans un fichier csv, toutes les tables d'un dessin/none
(defun c:Ecrit_table_dans_csv ()
(setq nchem (getvar "dwgprefix"))
(setq ndess (cadr (pw_scie_fich (getvar "dwgname"))))

(setq fich (getfiled "Fichier csv de table de données à écrire : " (strcat nchem ndess ".csv" ) "csv" 1))
(setq f (open fich "w"))
(setq ltable (ade_odtablelist))
(write-line "[TABLES]" f)
(write-line ";;nom de la table,description" f)

(foreach l ltable
(setq tmp (ade_odtabledefn l))
(setq desc (cdr (assoc "TableDesc" tmp)))
(write-line (strcat l "," desc) f)
)
(write-line "" f)



(foreach l (ade_odtablelist)
(write-line (strcat "[" l "]" ) f)
(write-line ";;nom de champ,description,type,valeur par defaut" f)
(setq tmp (AM_GetTableFormat l))
(foreach chp tmp
(setq chp (mapcar 'pw_guil_make chp))
(setq chp (pw_ch_de_lst chp ","))
(write-line chp f)
)
(write-line "" f)

)



(close f)
(OpenCsvWithoOOsCalc fich)
)

;*************************************************************************
;§/ade/nil si la table n'existe pas/table
(defun na_exist_table (table / lt)
(setq lt (ade_odtablelist))
(if (member table lt)
table
nil
)
)

;******************************************************************************
;§/ade/Copier les données d'objet d'une table vers une autre/none
;

(defun c:Table2otherTable ( / i)

(pw_getstringmem "\nTable à copier ?" "source-table")
(pw_getstringmem "\nTable cible ?" "cible-table")

(if (not (NA_EXIST_TABLE cible-table))
(progn
(setq lchp (AM_GetTableFormat source-table))
(NA_DEFINETAB cible-table (strcat "Copie de la table " source-table) lchp)
)
)

(prompt "\nChoix des objets pour l'opération")
(setq sel (ssget))

;*******************************************************************
;;§/ade/cree une table à partir de :/tblname tbldesc l-fields
;; tablename tabledesc '(liste des champs)
;;liste des champs compatible avec la liste retournée par AM_GetTableFormat
;;compatible avec les fichier ini de definition de table de nadiaa

(defun NA_definetab (tblname tbldesc l-fields )
(setq l-fields
     (mapcar '(lambda (x)
         (list (cons "colname" (car x))
             (cons "coldesc" (cadr x))
             (cons "coltype" (caddr x))
             (cons "defaultval" (pw_nil_t (cadddr x)))
            )
         )
         l-fields
     )
)

(ade_oddefinetab (list (cons "tablename" tblname)
             (cons "tabledesc" tbldesc)
         (list "columns"
             l-fields
         )
         )
)
)

 

 

 

g-eaux

 

 

Partager cet article
Repost0
11 octobre 2012 4 11 /10 /octobre /2012 15:33

Passer à DotNet pour la programmation d’Autocad pose plusieurs problèmes :

-          Pour ceux qui viennent du lisp : se familiariser avec des langages « modernes », s’embêter avec le typage et la portée des variables et des fonctions

-          Pour ceux qui viennent du lisp comme du VBA : programmer avec un éditeur complètement externe à Autocad.

Ce dernier point entraine pas mal de complications et de lourdeurs, pour les tests, le débogage, et l’accès à la documentation.

Cet article est une réponse de débutant pour les débutants à quelques points précis, et ne donne des exemples qu’en VB

 

Index:

Par où commencer avec .net ?

Ou trouver de l'aide sur les classes et le modèle d’objet ?

Dans Visual Studio

Autres sources de documentation

Dans le répertoire du SDK : Contenu de C:\ObjectARX 2012\docs :

Aide pour la programmation de Map

Aide pour la programmation de Civil

Aide pour la programmation avec Com (Visual basic, Visual lisp)

Migration de projet VBA

Comparaison managé-non managé

Non managé :

Managé :

Pourquoi mes points d'arrêt ne fonctionnent pas ?

Glossaire :

Liens divers et utiles :

 

Pour les débutants francophones comme moi, Gilles Chanteau (Gile) a été source d'aide précieuse, je pense qu'il est préférable de commencer à créer son wizard personnalisé avec ses tutos

Au début, je me suis mis à pied d'œuvre ici avec Template VB

Je vous laisse le soin de consulter ces articles, car mon billet n’est pas destiné à cloner ce qui a déjà été fait, mais à mettre l’accent sur le problème de la documentation, et sur quelques point et concepts qui m’ont posé problème car je suis de la vieille école, alors que les développeurs habitués aux langages modernes ne les remarquent pas …

Dans Visual Studio

Pour les fonctions VB et les librairies Microsoft, l'explorateur d'objet de Visual Studio donne directement des explications.

Pour toutes les librairies Autocad, il n'y a rien, sauf les mots clefs, les types, etc.

Pour avoir l'aide du SDK Autocad avec Visual studio, il faut installer l'aide pour Visual studio :

Télécharger ObjectARX 2012 Documentation sur la page ADN et l'installer d'abord sous Windows, puis sous Visual Studio :

- Ouvrir le gestionnaire d'aide

- Installer du contenu à partir du disque

- Parcourir... -> C:\Program Files (x86)\Autodesk\ObjectARX 201x  Help Files - Visual Studio 2010 Integration\helpcontentsetup.msha

- Suivant

- ObjectARX (Native & Managed) AutoCAD 201x -> Ajouter

Mais ce n'est pas forcément évident, il y a quelques problèmes à voir Ici

Autres sources de documentation

La bible : AutoCAD 2012 .NET Developers Guide

Il est à consulter en 1er pour tout ce qui est commun à Autocad

arxdoc.chm :

Contient tous les autres :

arxdev.chm

ObjectARX Introductory Concepts, un genre de « arx developper guide » ressemble à celui du lisp

arxiop.chm

ObjectARX for AutoCAD 2012 : Application Interoperability Guidelines

Des explications sur les conventions de noms, d'interface, d'installation, un guide de bonne pratique.

arxmgd.chm

ObjectARX for AutoCAD 2011 : Managed Class Reference

The Managed Class library provides namespaces which wrap the ObjectARX C++ library. This permits developers to program in the .NET environment.

L'équivalent de l'aide active X pour .net : toutes les classes, les méthodes et les propriétés.

Par exemple, pour les entités graphiques:

 

Autodesk.AutoCAD.DatabaseServices.Entity

This .NET class wraps the AcDbEntity ObjectARX class. It is the base class for all database objects having a graphical representation.

Exemple : 3dsolid

 

 

Autodesk.AutoCAD.DatabaseServices.DBObject

    Autodesk.AutoCAD.DatabaseServices.Entity

        Autodesk.AutoCAD.DatabaseServices.Solid3d

 

 

Managé,

est équivalent à :

 

 

AcRxObject

    AcGiDrawable

    AcHeapOperators

        AcDbObject

            AcDbEntity

                AcDb3dSolid

 

 

Non Managé.

 

Comparatif des méthodes :

 

Managed methods

Arx methods

 body 

BooleanOperation

 booleanOper 

ChamferEdges

 chamferEdges 

CheckInterference

 checkInterference 

CleanBody

 cleanBody 

ConvertToBrepAtSubentPaths

 convertToBrepAtSubentPaths 

CopyEdge

 copyEdge 

CopyFace

 copyFace 

CreateBox

 createBox 

CreateExtrudedSolid

 createExtrudedSolid 

 createFrom 

CreateFrustum

 createFrustum 

CreateLoftedSolid

 createLoftedSolid 

CreatePyramid

 createPyramid 

CreateRevolvedSolid

 createRevolvedSolid 

CreateSculptedSolid

 createSculptedSolid 

CreateSphere

 createSphere 

CreateSweptSolid

 createSweptSolid 

CreateTorus

 createTorus 

CreateWedge

 createWedge 

 enableObjectChangeGuid 

Extrude

 extrude 

ExtrudeAlongPath

 extrudeAlongPath 

ExtrudeFaces

 extrudeFaces 

ExtrudeFacesAlongPath

 extrudeFacesAlongPath 

FilletEdges

 filletEdges 

 generateDifferentObjectChangeGuid 

 getArea 

 getMassProp 

 getObjectChangeGuid 

GetSection

 getSection 

 getSlice 

GetSubentityColor

 getSubentColor 

GetSubentityMaterial

 getSubentMaterial 

GetSubentityMaterialMapper

 getSubentMaterialMapper 

ImprintEntity

 imprintEntity 

 internalSubentId 

 internalSubentPtr 

 isNull 

 isObjectChangeGuidEnabled 

 numChanges 

OffsetBody

 offsetBody 

OffsetFaces

 offsetFaces 

ProjectOnToSolid

 projectOnToSolid 

 recordHistory 

RemoveFaces

 removeFaces 

Revolve

 revolve 

SeparateBody

 separateBody 

 setBody 

 setRecordHistory 

 setShowHistory 

SetSubentityColor

 setSubentColor 

SetSubentityMaterial

 setSubentMaterial 

SetSubentityMaterialMapper

 setSubentMaterialMapper 

ShellBody

 shellBody 

 showHistory 

Slice

StlOut

 stlOut 

 subGetClassID 

TaperFaces

 taperFaces 

TransformFaces

 transformFaces 

 

On voit que toutes les méthodes arx n'existent pas en managé, et qu'une seule méthode existe en managé mais pas en arx : Slice

arxmgr.chm

ObjectARX 64-Bit Migration Guide

.Net étant managé, pas besoin de le lire

arxref.chm

ObjectARX for AutoCAD Ironman : Reference Guide

Documents the ObjectARX® and RealDWG™ C++ classes, member functions, global functions, namespaces, enumerations, structures, and macros.

Voir le comparatif ci dessus avec arxmgd.chm

 Contient toutes les classes, les méthodes et les propriétés en non managé

readarx.chm

ObjectARX for AutoCAD 2012: Readme

Describes changes and additions to this release of ObjectARX®.

Pas trouvée avec civil 2012, mais présente dans civil 2011, dans le répertoire :

C:\Program Files\Autodesk\AutoCAD Civil 3D 2011\Help

AutoCAD Map 3D ObjectARX C++ Developer's Guide

sdk.arx.cpp.dev.chm
sdk.arx.cpp.dev.pdf

AutoCAD Map 3D ObjectARX C++ Reference

sdk.arx.cpp.ref.chm

AutoCAD Map 3D ObjectARX .NET Developer's Guide

sdk.arx.net.dev.chm
sdk.arx.net.dev.pdf

AutoCAD Map 3D ObjectARX .NET Reference

sdk.arx.net.ref.chm

AutoCAD Map 3D Developer Samples Guide

sdk.samples.chm
sdk.samples.pdf

AutoCAD Map 3D SDK Readme

sdk._readme.chm

Autodesk Geospatial Platform Developer's Guide

sdk.geo.dev.chm
sdk.geo.dev.pdf

Autodesk Geospatial Platform Reference

sdk.geo.ref.chm

Autodesk Geospatial Platform AutoCAD Map 3D Extensions Reference

sdk.geo.ref.acmap.chm

Pas trouvée avec civil 2012, mais présente dans civil 2011, dans le répertoire :

C:\Program Files\Autodesk\AutoCAD Civil 3D 2011\Help

ActiveX API Reference (civilauto-reference.chm): contient même l'object model

civil_api_activex_reference.chm

Civil 3D Developer's Guide

civil_api_developers_guide.chm

CustomDraw C++ API Reference

civil_api_draw_reference.chm

.NET API Reference

civil_api_net_reference.chm

Disparue depuis la version 2011, inaccessible en ligne depuis VisualLisp, elle est réapparue pour Autocad 2013 :

ActiveX API documentation

Elle vous sera utile pour le portage de programme VBA en .net, qui est indispensable si vous travaillez en X64.

C’est possible avec très peu de modifications, excepté pour les évènements qui ne sont pas du tout compatibles.

Pour pouvoir utiliser com, il faut référencer et importer interrop :

Référencer C:\ObjectARX 201x\inc [..]\Autodesk.AutoCAD.Interop.dll et Interop.Common.dll

ImportsAutodesk.AutoCAD.Interop

Imports Autodesk.AutoCAD.Interop.Common

Un petit lien utile :

10 steps to migrate existing code to VB.NET

Pour réellement comprendre la différence entre les deux documentations arxmgd.chm et arxref.chm

L'exemple que je connais bien : acedInvoke() / invoke () qui a été l'objet de ce sujet : Liaison LISP/.NET

Non managé :

Import de acedInvoke

<System.Security.SuppressUnmanagedCodeSecurity()> _

        <DllImport("acad.exe", EntryPoint:="acedInvoke", _

        CharSet:=CharSet.Unicode, CallingConvention:=CallingConvention.Cdecl)> _

        Private Shared Function acedInvoke(ByVal args As IntPtr, ByRef result As IntPtr) As Integer

        End Function

 

On note : acedInvoke retourne un integer, nécessite deux arguments :

args pour ce que l'on évoque, et result pour le résultat

les arguments sont de type  IntPtr :

Type spécifique à la plateforme, utilisé pour représenter un pointeur ou un handle.

 

En gros,  acedInvoke retourne non pas un resultbuffer, mais l'adresse du  resultbuffer

 

 

Puis on définit La fonction InvokeLisp qui appelle acedInvoke

 

Public Shared Function InvokeLisp(ByVal args As ResultBuffer) As ResultBuffer

            Dim ip As IntPtr = IntPtr.Zero

            Dim status As Integer = acedInvoke(args.UnmanagedObject, ip)

            If status = CInt(PromptStatus.OK) AndAlso ip <> IntPtr.Zero Then

                Return ResultBuffer.Create(ip, True)

            End If

            Return Nothing

        End Function

 

On note :  InvokeLisp accepte un argument resultbuffer, et retourne un resultbuffer.

On initialise ip avec l'adresse 0

On passe a acedinvoke le resultbuffer sous forme de intPtr, car la propriété UnmanagedObject

est Public ReadOnly Property UnmanagedObject As System.IntPtr

     Membre de Autodesk.AutoCAD.Runtime.DisposableWrapper

 

Le résultat est passé par IP, qui est un IntPtr, et qui est transformé en resultbuffer par la methode create : ResultBuffer.Create(ip, True)

 

'ResultBuffer.Create

 

'This method creates a managed ResultBuffer object from an unmanaged resbuf pointer.

 

 

 

 

 

Exemple d'utilisation :

 ' call the 'foo' Lisp function which binds the reversed list to 'lst2'

            ' (defun foo () (setq lst2 (reverse lst1))) (vl-acad-defun 'foo)

            AcadExtensions.LispExtensions.InvokeLisp(New ResultBuffer(New TypedValue(CInt(LispDataType.Text), "foo")))

 

Managé :

Pas besoin d'import, on a une seule fonction :

    Public Shared Function InvokeLispManaged(ByVal args As ResultBuffer) As ResultBuffer

            Return Autodesk.AutoCAD.ApplicationServices.Application.Invoke(args)

        End Function

 

Exemple d'utilisation :

 ' (defun foo () (setq lst2 (reverse lst1))) (vl-acad-defun 'foo)

            'Appel lisp en managé:

            retour = AcadExtensions.LispExtensions.InvokeLispManaged(New ResultBuffer(New TypedValue(CInt(LispDataType.Text), "foo")))

Le code managé est donc plus simple, il faut d'abord chercher dans arxmgd.chm

 

Les points d'arrêt system (windows) et Autocad de base marchent très bien. Il semble que ceux de civil ou Map ne marchent pas.

Quand on est dans ce cas, on peut tracer avec des instructions de ce genre :

MsgBox("Je suis dans ma boucle  " + Chr(iObjCnt))

Beaucoup de mots anglais n’ont été rencontrés que dans le contexte informatique. Il peut être intéressant de connaître leur sens général :

En voici quelques un issus d’un dico harrap’s, mais cette liste a vocation à s’agrandir …

Class : leçon, cours

Inherit : hériter

Overrule : Rejeter (j’aurais juré « passer par-dessus la règle »)

Override : Annuler, passer outre, prédominer

Void : Vide, nul, non valide

Wrap : Envelopper

 

ProgrammationCsharp.pdf

Livre c#

Drive AutoCAD with Code

Blog c# plein de supers exemples

CIVIL .Net (Infrastructure Modeling DevBlog)

Programmer Civil avec .net

Convert VB.NET to C# - A free code conversion tool - developer Fusion

Code Converter | Provided by Telerik

Vous aurez souvent à le faire …

 through-the-interface. AutoCAD .NET

Vous l’aurez déjà trouvé !

 

 

g-eaux

 

Partager cet article
Repost0
1 octobre 2012 1 01 /10 /octobre /2012 15:39

 

Patch de mise à jour vers version 7.20
 

Note de février 2014 : il existe maintenant une version 7.21 mais les nouveautés de la version 7.20 ne sont expliquées qu'ici

 

Voici un patch PowerClic 7.20 à appliquer à la version 7.14 de PowerClic, dont on trouve les instructions d'installation ici

1) Installation

Décompresser l'archive dans le répertoire PowerClic, remplacer les fichiers vlx, txt et lsp. Les fichier xml sont nouveaux.

2) Pourquoi installer ce patch ?

2.1) Pour les commandes xrelative  et xabsolus

Un utilisateur m'a signalé un défaut dans la commandes xrelative :

J'ai constaté que la commande xrelative a un problème.

En effet elle utilise le nom de la référence pour créer le chemin relatif. Or le nom de la référence n'est pas nécessairement le nom de fichier de la référence. Pour ma part, afin d'avoir un affichage du nom des références dans le gestionnaire des propriétés des calques qui soit lisible, je simplifie le nom des références Donc dans mon cas, lorsque j'applique la commande xrelative, les références reconstruites sont fausses, car Powerclic prend le nom de référence pour créer le chemin relatif, et celui-ci pointe sur un fichier inconnu.

C'était une sacré boulette, il fallait la corriger. Au passage, j'ai effectué une mise à jour de Xabsolus, pour que la reconstruction de chemins négatifs marche avec Autocad 2012


 

2.2)Pour gérer particulièrement les entités HELIX, ARC_DIMENSION, MULTILEADER et LIGHT

PowerClic gère de manière générique toutes les entités, même les plus exotiques, mais le mode « Unknown » reste limité.

Les Multileader sont assez pratiques, mais vous noterez qu'Autocad ne permet pas de les sélectionner par style : c'est maintenant possible avec PowerClic.

Il reste une limitation : Lors de la création de multileader avec PowerClic, le texte saisit n'accepte ni les espaces, ni les retours à la ligne.

Attention : Si la sélection de MULTILEADER plante Autocad avec le message BAGMOD 1:

Le problème vient de du service pack 2 d'Autocad 2012, installer le pack 2.1

Les Arc_dimension sont gérées comme les cotations, et les HELIX et LIGHT n'ont pas de paramètres autres que ceux du mode Unknown.

2.3)Pour améliorer le support des cotations.

Le support des cotations à été rafraîchi, avec la création d'un fichier xml pour la correspondance code xdata (oui, les caractéristiques des cotations sont stockées dans des xdatas ...) et variable Autocad

2.4)Pour ne plus avoir de création de styles de textes au chargement de PowerClic

Par étourderie, j'avais laissé une commande de création et de modification de styles de texte traîner dans le code de PowerClic.

Je l'ai supprimée.

2.5)Pour pouvoir forcer la couleur à ducalque des MTEXT et MULTILEADER

Le plug-in internal_color_bylayer permet de supprimer le formatage de couleur dans les Mtext et Multileader : c'est pratique, quand vous travaillez en fond blanc, et que vous recevez des Mtext de couleur jaune ...

3) La liste des Plug-in disponibles


 

Cette liste n'indique pas le type d'entités auxquelles les plug-in s'appliquent, mais il n'est pas difficile de le deviner ... Le franglish est de rigueur, car Powerclic à eu sa petite carrière internationale ...


 

(La description des fonctions est issue du commentaire dans le code, il y a beaucoup de fautes de frappe, et beaucoup de fautes d'orthographe, veuillez m'excuser, mais au milieu du code, ça ne saute pas aux yeux)

+-_NUMERIC_VALUE

+-_NUMERIC_VALUE applique un changement de numérotation par addition ou soustraction

3D_ROTATE_X

3D_ROTATE_X rotation individuelle pour aligner avec le scu

3D_ROTATE_Y

3D_ROTATE_Y rotation individuelle pour aligner avec le scu

ALIGN_ATTRIB2VIEWPORT

ALIGN_ATTRIB2VIEWPORT définit les attributs sur le même calque que le bloc

ALL_SAME_SCALE

ALL_SAME_SCALE uniformise l’échelle d'une sélection d'entité - standardize scale of a sélection of entities.

ALL_SAME_SIZE

ALL_SAME_SIZE uniformise la taille d'une sélection d'entité - standardize size of a sélection of entities.

ATTDEF2TEXT

ATTDEF2TEXT transforme une étiquette attdef en texte

ATTRIB_COMME_COVADIS

ATTRIB_COMME_COVADIS "définit les attributs dans les claque topomat, topoalt, topocod"

ATTRIB_SUFFIX_PREFIX

ATTRIB_SUFFIX_PREFIX Ajout d'un suffixe et d'un préfixe

ATTRIB_VISIBLE

ATTRIB_VISIBLE rend les attribut de type visibles

ATTRIB2SAMELAYER

ATTRIB2SAMELAYER définit les attributs sur le même calque que le bloc

ATTRIB2SAMELAYERTHANATTDEF

ATTRIB2SAMELAYERTHANATTDEF définit les attributs sur le même calque que le bloc

BLOC2ANOTHER_BLOC

BLOC2ANOTHER_BLOC insère un bloc à la même place qu'un autre bloc

C:MPARCOURIRZP

C:MPARCOURIRZP fait un zoom sur l'entité précédente partir du menu

C:MPARCOURIRZS

C:MPARCOURIRZS fait un zoom sur l'entité suivante à partir du menu

C:Z-

C:Z- fait un zoom sur l'entité précédente

C:Z+

C:Z+ fait un zoom sur l'entité suivante

C:ZOOMZONE

C:ZOOMZONE prépare une série de zoom sur un zone rectangulaire

CALCULATE_AREA

CALCULATE_AREA Addition of entities aera

CALCULATE_CURVE_LENGTH

CALCULATE_CURVE_LENGTH Addition of curved entities length

CALCULATE_STRAIGHT_LENGTH

CALCULATE_STRAIGHT_LENGTH Addition of straight entities length

CALQUE_REPORT

CALQUE_REPORT Affiche un rapport sur les calques ou sont placées ces entités

CALQUE_SUFFIX_DEPUIS_ATTRIB

CALQUE_SUFFIX_DEPUIS_ATTRIB Ajoute un suffixe au calque correspondant à la valeur de l'attribut

CHANGE_ATTRIB_FROM_Z

CHANGE_ATTRIB_FROM_Z change l’étiquette z d'un bloc a partir de sa hauteur

CHANGE_PSTYLE

CHANGE_PSTYLE Change l’épaisseur et le style de tracé des attributs

CHANGE_Z_FROM_ATTRIB

CHANGE_Z_FROM_ATTRIB change la hauteur d'un bloc a partir de la valeur d'une de ses étiquettes

CHANGE_Z_FROM_NODAL

CHANGE_Z_FROM_NODAL place la valeur z à l'altitude des nodaux situés en dessous

CHANGE_Z_TO_ZERO

CHANGE_Z_TO_ZERO place la valeur z à zéro des blocs

CHEVAUCHEMENT_MARQUE

CHEVAUCHEMENT_MARQUE recherche et marque les chevauchement

CHEVAUCHEMENT_SUPPRIME

CHEVAUCHEMENT_SUPPRIME recherche et marque les chevauchement

CONVERT&JOIN2PLINE

CONVERT&JOIN2PLINE Joint arc et lignes sous forme de polyligne

CONVERT_TO_2DPLINE

CONVERT_TO_2DPLINE convertie polylignes 3d en poly 2d efface l'original - convert 3d pline to 2d pline

CONVERT_TO_NEW_2DPLINE

CONVERT_TO_NEW_2DPLINE convertie polylignes 3d en poly 2d - convert 3d pline to 2d pline

CONVERT2MTEXT

CONVERT2MTEXT transforme les testes en Mtext

CONVERTOSPLINE

CONVERTOSPLINE convertie polylignes lissée en spline - convert pline to spline

COPY2OTHERLAYER

COPY2OTHERLAYER copie les entités selectionnées dans un autre calque

CREER_CONTOUR

CREER_CONTOUR recrée les contours de hachure

CROSSENTITYZOOM

CROSSENTITYZOOM zoom successifs sur une sélection d'entité

CROSSSTRINGZOOM

CROSSSTRINGZOOM recherche une chaîne de texte dans un jeu de sélection, puis zoom successifs

DUPLICATE_AS_3DPOLY

DUPLICATE_AS_3DPOLY crée une multiligne sur une polyligne [ lsom ]

DUPLICATE_AS_MLINE

DUPLICATE_AS_MLINE crée une multiligne sur une polyligne [ lsom ]

DUPLICATE_AS_MPOLYGON

DUPLICATE_AS_MPOLYGON crée une multiligne sur une polyligne [ lsom ]

DUPLICATE_AS_PLINE

DUPLICATE_AS_PLINE crée une multiligne sur une polyligne [ lsom ]

DUPLICATE_AS_SPLINE

DUPLICATE_AS_SPLINE crée une multiligne sur une polyligne [ lsom ]

ENT_ROTATE

ENT_ROTATE change l’échelle globale d'une sélection d'entité - change scale of a sélection of entities.

ENT_SCALE

ENT_SCALE change l’échelle globale d'une sélection d'entité - change scale of a sélection of entities.

EXPLODE2TEXT

EXPLODE2TEXT décompose un Mtext dans son calque d'origine

EXPORT-CSV_NXYZ

EXPORT-CSV_NXYZ exporte les points d'une surface AEC au format numéro x y z dans un csv

EXPORT-TRIMBLE_NXYZ

EXPORT-TRIMBLE_NXYZ exporte un bloc au format numéro x y z

EXPORT_EXCEL_CSV

EXPORT_EXCEL_CSV exporte les attributs d'un bloc au format excel csv

EXPORT_NXYZ_LEICA_OR_EXCEL

EXPORT_NXYZ_LEICA_OR_EXCEL exporte un bloc au format numéro x y z

EXPORT_NXYZCD_GEOBASE

EXPORT_NXYZCD_GEOBASE exporte un bloc au format numéro x y z cd pour utilisation géobase

EXPORT_NYXZ_TRIMBLE

EXPORT_NYXZ_TRIMBLE exporte un bloc au format numéro y x z

GLOBAL_ATTRIBUT_EDITION

GLOBAL_ATTRIBUT_EDITION lance une édition globale façon attedit

HATCH_BY_LENGTH

HATCH_BY_LENGTH hachure les élément fermés à partir d'une taille - hatch closed élément according to their dimension

HATCH_IT

HATCH_IT hachure les élément fermés - hatch closed élément

INTERNAL_COLOR_BYLAYER

INTERNAL_COLOR_BYLAYER sélection par une chaîne de texte

MARK_FLOATING_VERTEX

MARK_FLOATING_VERTEX Marque les sommets de polyligne qui ne sont en dehors d'un grille de précision

MOVE_RELATIVE_TO_ANGLE

MOVE_RELATIVE_TO_ANGLE Déplace un bloc selon son angle - move an insert according to its rotation angle

MOVE2THETOP

MOVE2THETOP passe par dessus les entités selectionnées (Draworder en dur)

OFFSET_ALL

OFFSET_ALL décale toutes les polylignes

POINT_AT_INSERTION

POINT_AT_INSERTION insert un point au point d'insertion

POINT_ON_4DSOLID_CENTER

POINT_ON_4DSOLID_CENTER insert un point au point d'insertion

POINT_ON_EXTREMITY

POINT_ON_EXTREMITY insert un point au point d'insertion

POINT_ON_VERTEX

POINT_ON_VERTEX insert un point sur chaque sommets

POINT2BLOCK

POINT2BLOCK insert un bloc à la place de points ou autre entité fournies par des géomètres

POINTTO3DPOLY

POINTTO3DPOLY Dessine une 3dpoly passant par chaque de points ou autre entité fournies par des géomètres

PW_WIP_ARROUND

PW_WIP_ARROUND crée un wipeout fragmenté autour de ename [ ename ]

RANGE_SIZE_TO_ALL_SAME_SIZE

RANGE_SIZE_TO_ALL_SAME_SIZE uniformise la taille d'une sélection d'entité - standardize size of a sélection of entities.

RETRANCHE_UNE_VALEUR

RETRANCHE_UNE_VALEUR applique un changement de numérotation par addition ou soustraction

ROUND_SCALE_TO_LUPREC

ROUND_SCALE_TO_LUPREC arrondie la taille d'une sélection d'entité ajustées à la valeur de LUPREC- round size of a sélection of entities according to luprec.

ROUND_TO_LUPREC

ROUND_TO_LUPREC arrondie la taille d'une sélection d'entité ajustées à la valeur de LUPREC- round size of a sélection of entities according to luprec.

ROUND_WIDTH_TO_LUPREC_

ROUND_WIDTH_TO_LUPREC_ arrondie la taille d'une sélection d'entité ajustées à la valeur de LUPREC- round size of a sélection of entities according to luprec.

SAME_LTSCALE_THAN_WEIGHT

SAME_LTSCALE_THAN_WEIGHT force entities ltscale to their weight value

SAME_LTSCALE_THAN_WIDTH

SAME_LTSCALE_THAN_WIDTH force entities ltscale to their width value

SCALE_WIDTH

SCALE_WIDTH arrondie la taille d'une sélection d'entité ajustées à la valeur de LUPREC- round size of a sélection of entities according to luprec.

SELECT_3DFACE_BY_Z

SELECT_3DFACE_BY_Z insert un bloc à la place de points ou autre entité fournies par des géomètres

SELECT_BY_ATTRIB

SELECT_BY_ATTRIB change la hauteur d'un bloc a partir de la valeur d'une de ses étiquettes

SELECT_BY_LENGTH

SELECT_BY_LENGTH hachure les élément fermés à partir d'une taille - hatch closed élément according to their dimension

SELECT_BY_STRING

SELECT_BY_STRING sélection par une chaîne de texte

SELECT_BY_Z

SELECT_BY_Z insert un bloc à la place de points ou autre entité fournies par des géomètres

SELECT_ENTITY_FENCE

SELECT_ENTITY_FENCE sélection par trajet - select with fence

SELECT_INSIDE

SELECT_INSIDE sélection par les éléments fermés - select with closed éléments

SELECT_INSIDE_BOUDING_BOX

SELECT_INSIDE_BOUDING_BOX sélection par les éléments fermés - select with closed éléments

SELECT_INSIDE_BOUDING_BOX_II

SELECT_INSIDE_BOUDING_BOX_II sélection par les éléments fermés - select with closed éléments

SELECT_INTEGERS

SELECT_INTEGERS sélection des textes s'ils représentent un entier

SHOWBADDIM

SHOWBADDIM Montre les cotes forcées - show forced dim.

SUFFIX_PREFIX

SUFFIX_PREFIX Ajout d'un suffixe et d'un préfixe

TEXTWIPOUT

TEXTWIPOUT détourer un texte - TEXTWIPOUT

TXTREPORT

TXTREPORT exporter le texte sélectionné dans un fichier - export selected text into a file

TXTREPORT_CSV

TXTREPORT_CSV exporter le texte sélectionné dans un fichier au forma CSV - export selected text into a CSV file

WEIGHT2WIDTH

WEIGHT2WIDTH convert plot weight to pline width

WIDTH2WEIGHT

WIDTH2WEIGHT convert pline width to plot weight

WIPEOUT_OBJECT

WIPEOUT_OBJECT chainage wipeout et draworder pour blocs et formes

WRITEDXFVALUE

WRITEDXFVALUE créée une annotation basée sur un code dxf


 


 

g-eaux


 


 


 


 

Partager cet article
Repost0
11 septembre 2012 2 11 /09 /septembre /2012 16:17

 

Changer d'ordinateur sans réinstaller Windows seven 64



C'est un de mes sujets favoris depuis quelques années.

J'ai publié il y a bien longtemps un billet sur la méthode compliquée pour le faire avec XP, mais je ne la pense plus d'actualité.

Je rappellerai la méthode pour le faire avec Vista 64, car certain migrent actuellement d'un poste vista 64 à Seven 64.

1) Problématique

Si vous travaillez avec Autocad, vous avez déjà remarqué le temps qu'il faut pour reconfigurer son poste de travail lors d'une réinstallation, ou d'un changement de version.

Alors si vous utilisez une suite Autodesk, avec plusieurs configurations, et une douzaine d'applications avec leurs paramètres, un logiciel de messagerie, un navigateur avec ses favoris, ses mots de passe, et une configuration réseaux compliquée, changer de poste, c'est 3 jours de travail, et un mois d'emmerdes.

2) La solution

La solution, c'est de migrer son poste de travail d'un bloc, sur la nouvelle machine, sans rien perdre de sa configuration, avec tous ses logiciels installés. Ça marche, cela fait des années que j'utilise cette méthode.

3) Le mythe de l'installation « propre »

Tous les « geeks » du monde vont me tomber dessus : « T'étonne pas si ton poste plante, rien ne vaut une installation propre, ces bidouillage, ça finit toujours mal ... »

C'était certainement vrai pour 95 et 98, déjà moins pour XP, mais plus du tout pour Vista et Seven.

Mon expérience de ces deux systèmes, c'est qu'ils ne plantent pas, sauf avec des défaillances matérielles. (Ventilateur de chipset HS, disque dur en train de rendre l'âme sont les deux seules causes de plantage que j'ai eu en 4 ans)

Le dernier poste de travail que j'ai installé de manière académique, c'était lors de mon passage de w32 à w64, car là, il n'y a pas d'autre solution. Ce poste n'était ni plus rapide ni plus fiable que son clone. Autocad plantait aussi régulièrement, généralement avec des applications tierces...

4) Le problème des licences

Tous les logiciels protégés vont se rappeler à votre bon souvenir, dès le 1er démarrage. A commencer par Windows.

Cette astuce ne fonctionne que si vous avez des licences pour votre nouvelle machine, ce n'est pas un outil de piratage. Vous devrez donc entrer un nouveau numéro de série pour vos logiciels. Par contre, il faut que la version de Windows soit rigoureusement la même, c'est parfois un problème.

5) Niveau requis

Ce petit tuto s'adresse à des personnes connaissant parfaitement le système Windows, habitués à l'installer, à l'aise dans le bios et n'ayant pas peur d'ouvrir leur ordinateur. Je ne perdrais donc pas mon temps à capturer des cases de dialogue pour marquer sur quel bouton cliquer.

On ne peut se lancer dans cette méthode que si on est sûr de soi ...

6) Principe

L'idée est de greffer l'image système de votre ordinateur actuel sur une ordinateur neuf.

Tout en conservant son vieil ordinateur fonctionnel, au cas ou la greffe ne prendrait pas.

Pour cela, on utilisera l'outil de création d'image système Windows intégré à Vista et Seven

7) Avant de commencer

Inutile de charger la mule : nettoyer Windows, videz la corbeille, supprimer les fichiers temporaires, faites le ménage dans les dossiers « users » (document, bureau etc...)

Je conseille de passer un petit coup de l’excellent Ccleaner, qui marche très bien.

Dès ce stade, il est très pratique d'installer le nouvel ordinateur, connecté au réseau de l'entreprise.

8) Conventions

L'ancien ordinateur : O1

Le nouvel ordinateur : O2

Le disque dur contenant le système de l'ancien ordinateur : S1

Le disque dur où installer le système sur le nouvel ordinateur : S2

Le disque dur où créer l'image système de S1  : S3

9) Préparer Windows pour la création de l'image

9.1) 1er cas, je ne veux rien toucher au système mon ancien ordinateur (S1) :

Dans ce cas, il vous faudra procéder en deux temps : Créer une image de S1, la restaurer sur un autre disque (s2), remplacer S1 disque par S2 dans O1, booter O1 avec le disque S2, faire les préparations sur O1 et mettre le nouveau disque S2 dans le nouvel ordinateur O2 .... pour finir la migration. C'est plus long, mais c'est le plus sûr...

9.2) 2eme cas, je veux aller au plus vite.

Dans ce cas, on passe directement à l'étape suivante, préparer Windows à la greffe.

9.3) Préparer Windows à la greffe.

Les causes les plus courantes de rejet sont l'anti-virus, les drivers de chipset et de carte vidéo (nvidia notamment) : Il faut les supprimer avant de créer l'image.

Supprimer/désactiver l'anti-virus

Désinstaller les driver présents dans programmes et fonctionnalités (Ethernet, audio, vidéo, chipset) Surtout ne redémarrez pas Windows !

Vous pouvez également supprimer ces composants dans le gestionnaire de périphériques, encore une fois, ne redémarrez pas Windows.

9.3.1) Si votre ancien ordinateur (O1) est sous vista :

Exécuter msconfig, indiquer « détecter la couche HAL » dans les options de démarrage. Cette option n'existe pas sous Seven, où elle est inutile.

10) Créer l'image

Créer une image système Windows de S1 avec :

Panneau de configurations

sauvegarder ou restaurer

Créer une image système

L'image peut être créée sur un ordinateur du réseau, un disque dur externe, un deuxième disque dur.

Dans tous les cas, l'image doit être placée à la racine du disque S3, sinon Windows ne la trouvera pas lors de la restauration. Le disque S3 doit contenir une seule image.

11) Restaurer l'image



11.1) 1er cas

Si vous avez pris l'option 9.1

Il vous faut restaurer l'image disque sur l'ordinateur d'origine (remplacer le disque S1 par S2 dans l'ordinateur O1)

11.2) 2eme cas

Si vous avez pris l'option 9.2

Vous pouvez directement restaurer l'image sur le nouvel ordinateur (O2)

11.3) Restaurer une image système Windows

Pour cela, il faut se munir du disque d'installation ou de récupération Windows, modifier le bios pour booter sur le lecteur cd/dvd et booter.

Choisir réparer au lieu d'installer.

Contrairement à une idée reçue, l'option « installer des pilotes » ne sert que pour installer des pilotes de disques dur, elle ne sert pas à installer des pilotes système. Il m'est arrivé de l'utiliser pour un disque SAS sur contrôleur LSI, mais normalement, vous n'en aurez pas besoin.

Si l'image est sur un ordinateur réseau, il faut spécifier le chemin, Windows vous demandera un nom d'utilisateur et un mot de passe.

Le disque contenant l'image sera automatiquement exclus de la liste des emplacements cible pour l'installation de l'image.

12) Lancer l'image restaurée sur S2

Dans tous les cas, avant de booter une image restaurée, il faut s'assurer que l'ordinateur ne contient qu'un seul disque dur contenant un système Windows. Il est inutile de jouer sur l'ordre de boot des disques, ou d'intervertir la connectique sata : Dans tous les cas, Windows décèlera deux OS, proposera une réparation, créera arbitrairement un mappage d'unité, et vous pouvez vous retrouver avec un Windows démarrant sur le disque D :, mais dont tous les raccourcis pointent sur le disque C : C'est extrêmement pénible ...



12.1) 1er cas

Si vous avez pris l'option 11.1 il faut booter cette image sur le vieux poste O1, et passer à l'étape 9.3

Ensuite, il faut remettre S2 dans l'ordinateur O2, et passer au chapitre suivant

12.2) 2ème cas

Le disque S2 est placé dans l’ordinateur O2, le système se lance normalement, Windows détecte un à un les nouveaux périphériques, soyez patients ...

Relancez Windows, et installez les drivers spécifique à votre machine, il ne vous restera plus qu'à activer/transférer vos licences logicielles : Votre nouveau poste est prêt à travailler.

N'oubliez pas de déconnecter O1 du réseau, ou de changer son nom et ses IP, car votre clone O2 créera un conflit réseau.

13) Autre problèmes rencontrés

Si vous avez un écran bleu avec l'erreur 0x0000007B (plantage sur classpnp.sys), allez dans le Bios, changez l'émulation SATA, passez de AHCPI à RAID, ou vers IDE ou vers compatibilité.

Ça devrait suffire, et ça ne change rien à l'indice de performance Windows du disque.

14) Autres pistes :

N'ayant plus l'habitude de changer de carte mère, je n'avais pas pensé à formuler de demandeà google sous cette forme:

"changer de carte mère sans réinstaller windows"

On trouve déjà plus de réponses, des farfelues et des sérieuses:

http://www.thyzoon.fr/Info/Sysprep/sysprep.php

Sysrep existait déjà sous xp, mais n'était pas installé à la base, et la documentation inexistante.

Il a bien évolué, et donc il pourrait remplacer ou compléter la suppression des périphérique et des drivers  (chap 9.3).

Pour la détection de la couche HAL, sous Seven, elle serait toujours activable via Bcdedit.

En principe, on peut tout faire avec Bootrec et Bcdedit, mais en réalité, j'ai déjà essayé de démêler un MBR défaillant avec, et malgré des messages encourageants, dans la réalité, ça n'a jamais marché...

 

15) Conclusion

J'ai fait plusieurs fois la migration xp32->xp32, deux fois la migration Vista64->Vista64, et une fois la migration seven64 -> seven 64, avec plus ou moins de difficultés. Certaines précautions que je préconise sont peut-être inutiles, mais les opérations sont longues, je préfère mettre un maximum de chances de mon côté. Le point le plus problématique est le chipset. Si le chipset est le même, une image marche directement sur une autre machine !

Si vous avez d'autre problèmes à signaler, n'hésitez pas à les poster en commentaire, ça sera utile à tout le monde.

J'ai déjà pratiqué des benchmark Autocad avec une installation propre puis sur une image restaurée sur la même machine, aucune différence.

L'indice de performance Windows ne change pas non plus, alors à vous de jouer !



g-eaux









Partager cet article
Repost0
2 août 2012 4 02 /08 /août /2012 09:49

Mise à jour pour 2017 ici

Fichiers de coloration syntaxique pour l’environnement Autocad avec Notepad++, suite

Dans mon billet précédent, j’ai mis à disposition différents fichier xml pour la coloration syntaxique des fichiers de l’environnement Autocad.

Restait le lisp, pour lequel il existe déjà un fichier de syntaxe en natif dans Notepad++, mais qui est du common lisp, bien différent de l’Autolisp et de ses extensions visual-lisp et com .

Heureusement Notepad++ est vraiment bien fait, et il permet de personnaliser les langages prédéfinis, non pas à travers le panneau de langages utilisateurs, mais avec le configurateur de coloration syntaxique.

Donc voici le fichier styler.xml qui contient cette mise à niveau pour Lisp.

Bien sûr, j’utilise de préférence l’éditeur visual-lisp, mais lorsque l’on a besoin de faire du formatage, d’utiliser des macros, Notepad ++ est bien pratique …

Mode d’emploi

Télécharger le fichier styler.xml, placez le dans le répertoire C:\Users\ « votre nom d’utilisateur »\AppData\Roaming\Notepad++\

Démarrer Notepad++, et c’est tout !

 

 Sites de référence Notepad++:

 

http://notepad-plus-plus.org/fr/

 

 

 

g-eaux

 

 

 

Partager cet article
Repost0
25 juillet 2012 3 25 /07 /juillet /2012 16:09
Fichiers de coloration syntaxique pour l’environnement Autocad avec Notepad++

J’ai longtemps été un fan de l’éditeur de texte « Editeur », de studioware.

J’avais mis en téléchargement les fichiers ini pour Autocad sur cette page

Editeur existe encore, il lui reste certains avantages par rapport à Notepad++ (comme la sélection en rectangle, le maintien de la coloration lors de copier/coller vers Word), mais il n’a pas évolué depuis 2005, et avec Windows 64, il faut toujours le lancer en mode admin.

Donc j’ai progressivement migré vers notepad++, auquel il manquait un vrai gestionnaire de projet, mais maintenant, je pense qu’il est vraiment arrivé à maturité.

A part l’habitude, je n’avais  donc presque plus de raison d’utiliser éditeur, sauf le fait que j’avais tout un environnement de coloration syntaxique pour Autocad : J’ai donc décidé de tout migrer.

 

Problématique

Mes fichiers de syntaxe datant d’Autocad 2006, j’ai décidé de les mettre à jour pour la 2013

Il est bien loin le temps où l’on pouvait faire un copié collé depuis des fichiers hlp, Il y a bien des liste de commandes que l’on trouve ça et là, mais j’ai préféré être sûr du coup.

De plus, il y a les commandes françaises, anglaises, internationales, avec dialogue, sans dialogue …

Pour les variables Autocad, pas de problème, on fait un modifvar, ? , et on  a toute la liste.

Pour les commandes, je suis partis de plusieurs sources que j’ai compilé, j’ai fait un mapcar de ‘getcname sur les listes, un tri sans doublon, puis je leur ai ajouté _ pour les internationales. On devrait avoir tout.

Pour que ce travail ne soit pas perdu, et qu’il puisse être mis à jour, voici un Classeur xml (à ouvrir avec Excel) contenant tout cet inventaire.

Limitations

La coloration Autolisp ne gère pas l’ouverture fermeture par bloc, il faut utiliser le format Lisp de N++ pour l’avoir.

La mise au point d’une coloration syntaxique peut être logue et compliqué, elle n’est pas forcément sans erreurs, et c’est aussi une affaire de goût …

Fichiers de coloration syntaxique

Ce sont des fichiers xml que vous pouvez télécharger :

Pour la coloration des scripts Autocad, avec les commandes, les variables et les expressions lisp :

 

notepad_script.xml V2012

Mise à jour pour 2017 ici

Pour la coloration des fichiers DXF :

 

notepad_dxf.xml

Pour la coloration des anciens fichiers menus d’Autocad, avec les commandes, les variables,  les expressions lisp  et les expressions diesel :

 

notepad_menus.xml V2012

Mise à jour pour 2017 ici

Pour la coloration des fichiers de type de ligne, de hachures :

 

notepad_styles.xml

Pour la coloration d’autolisp, avec les vlax- et les vla- :

notepad_Autolisp.xml V2012

Mise à jour pour 2017 ici

Pour la coloration des fichiers de case de dialogue Autolisp :

 

notepad_dcl.xml

Instructions d’utilisations

La dernière version de notepad++ permet d’importer et d’exporter des langages personnalisés, Il faut cliquer sur l’icône panneau de langage définit par l’utilisateur (un éclair sur une fenêtre, à côté du guide d’indentation)

Là vous avez le panneau de définition de langage, avec 2 boutons, importer et  exporter :

Un bug fait qu’il faut inverser les boutons : Importer exporte, exporter importe !*

 

Sites de référence Notepad++:

 

http://notepad-plus-plus.org/fr/

 

g-eaux

 

*ceci était vrai en juillet 2012, mais la version 6.5 de septembre 2013 n'a plus ce problème (Note de février 2014)

Partager cet article
Repost0