Olivier Eckmann
Membres-
Compteur de contenus
2 348 -
Inscription
-
Dernière visite
-
Jours gagnés
119
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Olivier Eckmann
-
BUGS toujours présents malgré SP1 !!!!
Olivier Eckmann a répondu à un(e) sujet de rebcao dans AutoCAD LT 2015
Bonjour, pour la bannière de tracé, la version 2014 n'affiche plus le message, mais l'info reste présente dans le DWG donc si réouvert dans une version antérieure, le message revient. Avec 2015, le message n'apparaît plus et l'enregistrement du DWG supprime l'info de dessin éducation, donc si réouvert dans une version antérieure, plus de message et plus de bannière. Ça fonctionne aussi dans le DWG TrueView2015. Olivier -
Bonjour, J'ai écrit des fonctions qui permettent de récupérer les propriétés des objets, par ex la couleur, le calque, le type de ligne, puis selon les objets, l'altitude, le point d'insertion, le style de texte, etc... Chaque fonction est écrite sur le même principe: - passage d'un ObjectId en paramètre - vérification que cet ObjectId est valide, non nul et non erased. - démarrage d'une transaction dans un using - ouverture de l'objet en mode Read - lecture de la propriété - la fin du using termine la transaction et fait le ménage... - la fonction renvoie la valeur de la propriété lue. Tout fonctionne parfaitement. Le problème est que je dois contrôler la structure d'un DWG donc pour chaque objet, je dois contrôler 4 à 8 propriétés par rapport à un cahier des charges. Les temps de comparaison est très long (environ 1 minute pour un dessin de 4000 objets). J'ai donc fait un test simple avec 2 approches différentes: - Cas1 : un programme qui utilisent mes fonctions permettant d'extraire à chaque fois une propriété - Cas 2 : un programme qui utilise une seule transaction, ouvre un objet, récupère les propriétés souhaitées, puis passe à l'objet suivant, etc... Dans le 1er cas le programme met 40 secondes pour balayer mon dessin contenant 10000 polylignes alors que dans le 2ème cas il met moins d'une seconde. N'ayant pas envie de dupliquer mon code de lecture des propriétés pour chaque type d'objet, y a-t-il un moyen d'accélérer le traitement avec la bib de fonctions déjà écrite? ou modifier la manière d'accéder à mes objets pour ne pas perdre autant de temps? Merci. Olivier
-
Bonjour, Par défaut un profil sans civil est créé. Sinon, il suffit de créer un nouveau profil (par exemple "Mon_Profil_Acad" ), puis de quitter Civil. Ensuite ouvrir la base de registre dans HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-XXX-C\Profiles\"Mon_Profil_Acad" Là tu dois avoir une clé qui s'appelle IsPureAcadProfil qu'il suffit de la mettre à 1 Valider, quitter puis relancer Civil avec l'option /P "Mon_Profil_Acad" pour démarrer sur ce profil qui ne doit pas charger les composants de Civil 3D. C'était dans cette discussion que l'on en avait discuté. Olivier
-
Au temps pour moi OU autant pour moi. Ça n'a pas l'air si simple. En tout cas ça se discute. Olivier
-
le programme ACETTEST.FAS est bien chargé au démarrage? Olivier
-
Bonjour, j'avais proposé une solution dans cette discussion (message 5 et 9) qui devrait fonctionner. Olivier
-
[Résolu] Ajout/suppression d'attribut à une référence de bloc
Olivier Eckmann a répondu à un(e) sujet de Olivier Eckmann dans Pour aller plus loin en LISP
Effectivement, j'ai implémenté le SwapId (en C#) entre mon ancien bloc et mon nouveau, ce qui intervertit les Objectid ET les handles. Donc tout fonctionne bien. Olivier -
[Résolu] Ajout/suppression d'attribut à une référence de bloc
Olivier Eckmann a répondu à un(e) sujet de Olivier Eckmann dans Pour aller plus loin en LISP
Je suis aussi revenu au remplacement par une nouvelle insertion et effacement de l'ancien. En .net il y a une fonction SwapIdWith qui s'implémente comme cela: firstObj.SwapIdWith(secondId, swapExtendedData, swapExtensionDictionary); Je vais voir de ce côté car elle permet d'intervertir les Id et les Handles, et il me semble que la table de SORTENTS pour les ordres de tracé fonctionne sur les Handles. Merci à Bruno et Patrick Olivier -
[Résolu] Ajout/suppression d'attribut à une référence de bloc
Olivier Eckmann a répondu à un(e) sujet de Olivier Eckmann dans Pour aller plus loin en LISP
Bonjour, Ça fonctionne presque. En fait c'est ATTSYNC qui est un peu bizarre. Si je lance la commande, puis que je prends l'option sélectionner, et que je sélectionne mon bloc, pas de souci, ATTSYNC propose de redéfinir les attributs. Par contre si je prends l'option NOM pour spécifier le bloc par son nom, alors ATTSYNC refuse de fonctionner car le bloc ne possède pas d'attribut. Commande: ATTSYNC Entrez une option [?/Nom/Sélectionner] <Sélectionner>: _NAME Nom du bloc à synchroniser ou [?]: PanneauSensInterdit La table des blocs ne contient aucun bloc avec attributs dénommé PanneauSensInterdit. Commande: ATTSYNC Entrez une option [?/Nom/Sélectionner] <Sélectionner>: S Sélectionnez un bloc: ATTSYNC le bloc PanneauSensInterdit? [Oui/Non] <Oui>: ATTSYNC terminé. Je continue à chercher. Merci Olivier -
[Résolu] Ajout/suppression d'attribut à une référence de bloc
Olivier Eckmann a répondu à un(e) sujet de Olivier Eckmann dans Pour aller plus loin en LISP
Grand merci pour tout ça. Je teste et je reviens dès que c'est concluant. Olivier -
Avec quelle version d'office? On avait effectivement un problème récurrent avec Office 2000 qui ne permettait de faire du copier/coller depuis les listings Autopiste, mais depuis qu'on est passé à office 2007, les listings de Covadis (projet plate-forme) ou Autopiste, on les copie/colles dans nos DCE pour mettre à jour les quantités automatiquement sans souci. Olivier
-
Effectivement j'avais survolé le code trop rapidement. Par contre dans la version qui fonctionne le bloc est inséré, mais si c'est un bloc avec attribut, il va manquer des valeurs. Pour assurer, il faudrait mettre la variable ATTREQ à 0 avant d'insérer le bloc pour être sûr qu'Autocad ne demande pas les valeurs des attributs. Remettre ATTREQ à 1 à la fin et/ou dans la fonction de gestion d'erreur. Olivier
-
[Résolu] Ajout/suppression d'attribut à une référence de bloc
Olivier Eckmann a répondu à un(e) sujet de Olivier Eckmann dans Pour aller plus loin en LISP
Oui mais non en fait dans ton dessin, comme le bloc original avait des attributs, le fait de les supprimer de la définition garde en mémoire que c'était un bloc avec attribut donc ATTSYNC se fait "rouler dans la farine" car il croit que la définition du bloc contient toujours des attributs. Par contre tu démarres un nouveau dessin, tu définis ton bloc "repere file projet" avec simplement une ligne et un cercle et tu insères ton Dessin6 dedans. Alors ATTSYNC ne se fait plus "berner" et tu obtiens le message indiquant que ton bloc n'a pas d'attribut. Donc il faudrait que j'ajoute des attributs à ma définition de bloc pour ensuite les enlever et lui faire croire qu'ils sont toujours là... Si il y a plus simple je préfère! Olivier -
On peut aussi redéfinir le bloc sans l'insérer (ce qui évite de l'effacer ensuite) avec cette syntaxe (command "_-insert" (strcat b "=" dir "\\" f)) (command) Olivier
-
[Résolu] Ajout/suppression d'attribut à une référence de bloc
Olivier Eckmann a répondu à un(e) sujet de Olivier Eckmann dans Pour aller plus loin en LISP
Merci pour les infos, mais je n'arrive pas du tout à mettre en oeuvre ton astuce. Je joins un fichier qui contient: 1 bloc COVAPOINT avec 2 attributs (c'est ma définition de bloc qui contient au moins un attribut pour pouvoir lancer ATTSYNC) 1 bloc "PanneauSensInterdit" en noir qui est une insertion normale de ce bloc 1 bloc "PanneauSensInterdit" rouge qui possédait un attribut que j'ai supprimé par le programme de gilles (code 66 à 1 restant) Commande: (entget (car (entsel))) Choix de l'objet: ((-1 . <Nom d'entité: 7edfc1e0>) (0 . "INSERT") (330 . <Nom d'entité: 7edf7cf8>) (5 . "F2F94") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 1) (100 . "AcDbBlockReference") (66 . 1) (2 . "PanneauSensInterdit") (10 27.9999 8.25 0.0) (41 . 3.0) (42 . 3.0) (43 . 0.6) (50 . 6.13319) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0)) Lorsque je lance ATTSYNC et que je sélectionne mon panneau, il me dit : Commande: attsync Entrez une option [?/Nom/Sélectionner] <Sélectionner>: Sélectionnez un bloc: Le bloc sélectionné est sans attribut. Si tu as la solution je suis preneur. Je fais les tests sur un MAP 3D 2008. Merci Olivier TEST_EE_200-1000-2.zip -
Ça y est, le patch 14.0b est sorti Olivier
-
[Résolu] Ajout/suppression d'attribut à une référence de bloc
Olivier Eckmann a répondu à un(e) sujet de Olivier Eckmann dans Pour aller plus loin en LISP
Bonjour, La commande ATTSYNC ne peut pas être la solution. Si j'ai une définition de bloc qui contient des attributs et que sur UNE référence (insertion) particulière de ce bloc je souhaite enlever tous les attributs, quand je lance ATTSYNC il me les remet. Et si ma définition de bloc n'a plus d'attribut, ATTSYNC refuse de la prendre en compte car cette commande ne sait travailler que sur les blocs dont la définition possède un attribut. D'autre part ATTSYNC redéfinit les attributs sur tous les blocs déjà insérés selon leur définition, y compris la position. Ce qui m'oblige à stocker les caractéristiques de chaque attribut (position, rotation, style, hauteur...) pour les restaurer après ATTSYNC. C'est un peu lourd. Gilles avait écrit un programme qui permettait de synchroniser les attributs ajoutés à une définition sans toucher aux caractéristiques des blocs déjà insérés. Mais le code c'est du C# et j'étais parti en lisp. Mais si il n'y a pas d'autre solution je reprendrais une partie du code C# pour l'appeler à partir de mon lisp. Pour la réinsertion, en fait je fait un "entget" sur mon bloc avec attribut, puis un "subst" de (66 . 0) à la place de (66 . 1) et j'utilise cette liste dans un "entmake" ce qui permet de cloner un bloc avec attribut en un bloc identique mais sans attribut. quelque soit sa définition (avec ou sans attribut) puis un "entdel" de mon bloc d'origine. Le problème c'est que j'ai une liste (et un jeu de sélection) des blocs à traiter en version ename et en version vla. le fait d'effacer un bloc et de le remplacer par un autre m'oblige à mettre mes listes à jour, et c'est toujours un peu sportif. Olivier -
[Résolu] Cote linéaire puis continue, macro ?
Olivier Eckmann a répondu à un(e) sujet de Dinosor dans AutoCAD 2011
dans un bouton ^C^C_dimlinear;\\\_dimcontinue;\ Olivier -
[Résolu] Ajout/suppression d'attribut à une référence de bloc
Olivier Eckmann a répondu à un(e) sujet de Olivier Eckmann dans Pour aller plus loin en LISP
Salut, c'est bien le même type de code que j'utilisais. Voilà la liste d'un joli point topo une fois ses attributs supprimés par le programme de Gilles REFERENCE DE BLOC Calque: "TOPOJIS" Espace: Espace objet Maintien = f20e4 Nom du bloc: "COVAPOINT" en point, X=1679998.262 Y=8165011.103 Z= 0.000 Facteur d'échelle X: 1.000 Facteur d'échelle Y: 1.000 Angle de rotation: 100.0000g Facteur d'échelle Z: 1.000 Mettre à l'échelle uniformément: Non Autoriser la décomposition: Oui SEQUENCE FIN Calque: "TOPOJIS" Espace: Espace objet Maintien = f20e5 Le code SEQEND reste et n'est pas mis à jour. Et MAP affiche le message d'erreur suivant lorsqu'on sélectionne ce bloc et que la palette de propriété est affichée "Impossible de lire les attributs de bloc à partir de la référence de bloc sélectionnée." La commande "Contrôler" d'Autocad nous dit qu'il n'y a aucune erreur dans la base de données, évidemment Je vais chercher du côté du C# si on peut faire mieux. Olivier PS: je viens de m'apercevoir d'un truc rigolo. Le Handle du SEQEND suit immédiatement celui du INSERT, puis les attributs sont ajoutés ensuite et leur Handle suit. Ce qui voudrait dire qu'AutoCAD ajoute d'abord le SEQEND puis les attributs à la suite, même si c'est listé dans le sens inverse. -
BUGS toujours présents malgré SP1 !!!!
Olivier Eckmann a répondu à un(e) sujet de rebcao dans AutoCAD LT 2015
Pour la barre de défilement, chez Autodesk ils ont une solution que l'on peut résumer par "Dis moi ce dont tu as a besoin, et je t'expliquerais comment t'en passer", trop fort ces américains Olivier -
Bonjour, J'essaie de supprimer tous les attributs d'une référence de bloc. (setq oVlaBlk (vlax-ename->vla-object oBloc)) (foreach oVlaAtt (vlax-invoke oVlaBlk 'GetAttributes) (vla-delete oVlaAtt) ) (vla-update oVlaBlk) ça fonctionne visuellement, le problème c'est que mon bloc possède encore le drapeau (66 . 1) et donc la propriété HasAttributes à true, ce qui me génère un message d'erreur à chaque fois que je sélectionne ce bloc. J'ai trouvé une solution en remettant en place un nouveau bloc et en effaçant l'ancien, mais c'est pas très propre (ordre de tracé non respecté, ...) Est-ce qu'il y a une solution pour effacer tous les attributs d'un bloc et lui indiquer qu'il n'a plus d'attribut? Merci Olivier
-
Insertion de blocs à partir d'un CSV
Olivier Eckmann a répondu à un(e) sujet de zebzeb dans LISP et Visual LISP
Bonjour tu as le programme de Lee Mac pour lire un CSV et récupérer une liste de liste. ReadCsv Ca sera plus simple à manipuler, et comprendre le fonctionnement du lisp pour lire le fichier CSV permet de progresser plus vite. Olivier -
Lire une liste avec un numérique
Olivier Eckmann a répondu à un(e) sujet de zebzeb dans Routines LISP
(nth 0 Maliste) => "a" (nth 1 MaListe) => "12" ... Olivier -
Peut-être la variable SELECTIONEFFECT à 0 Olivier
-
Bonjour, sur mon portable équipé du HDD MAP3D 2012 1er démarrage 1'53 démarrage suivant 33" MAP3D 2014 1er démarrage 1'59 démarrage suivant 36" MAP3D 2015 1er démarrage 1'56 démarrage suivant 35" Ni mieux ni moins bien au fil des versions... Remplacement par un SSD cet été, ça devrait aller mieux Olivier
