Aller au contenu

Olivier Eckmann

Membres
  • Compteur de contenus

    2 354
  • Inscription

  • Dernière visite

  • Jours gagnés

    120

Tout ce qui a été posté par Olivier Eckmann

  1. peut-être LENSLENGTH c'est la variable qui définit la focale courate pour les nouvelles caméras. Olivier
  2. Bonjour, 1. convertir les DXF en DWG soit comme proposé avec SAS soit avec DWGTrueView 2. sous MAP, associer tous les DWG en dessin source, puis faire une requête "Emplacement Tout" Olivier
  3. Salut Thierry, est-ce que sur un Lidar codé, Covadis pourrait n'utiliser que les points codé SOL ce qui permettrait d'éliminer automatiquement les points codés Bâtiment ou végétation, sans avoir à se "taper" le nettoyage du nuage à la main? Olivier.
  4. J'ai pas de Civil installé, donc à l'aveugle, je dirais qu'il faut remplacer: R19.0 par R20.0 ACAD-B000:40C par ACAD-D000:40C COVADIS par le nom de ton profil. Mais le plus simple c'est d'aller directement dans la base de registre comme ça t'es sûr de ne pas te tromper. Olivier
  5. Bonjour, Je reviens de différents tests: - au départ création d'une transaction à chaque ouverture => 40s de traitement - Id.getObbject() qui utilise la TopTransaction => 5 s - passage de la transaction en paramètre pour utiliser tr.getObject() => 4 s - Open/Close direct sur l'objet => moins de 1s. Donc en conclusion : - pour mes fonctions de lecture qui ne modifie pas l'objet, je vais utiliser le Open/Close (pas de possibilité de OpenCloseTransaction car non dispo en 2007 et 2008). Tant pis pour les avertissements de fonction obsolète dans VS. - pour les fonctions qui modifie les propriétés, utilisation d'un paramètre optionnel de type Transaction par défaut null. Si la transaction est passée en paramètre alors utilisation directe, sinon tente de récupérer la toptransaction pour l'utiliser, sinon démarre une transaction. Comme ça je ne change rien à mon code général, et je ne modifie que ma bib qui s'adapte à ce que je lui fournis ou à ce qui est dispo. Merci à vous 2 pour toutes les infos. Olivier
  6. Merci Maxence, mais là je ne comprends pas du tout quand tu dis qu'il ne faut pas démarrer une transaction dans la fonction. Où dois-je démarrer ma transaction? Dans ma commande principale? au chargement (en variable membre) de mon dialogue? Mon dialogue étant non modal, je ne peux pas laisser une transaction ouverte??????. Pour poursuivre mes tests, j'ai modifié ma bib pour passer en paramètre ma transaction ouverte lors du lancement de la fonction d'analyse. Je gagne un facteur 8 (40 s à 5 s), c'est déjà super. A priori j'ai rien compris aux transactions, je vais me pencher sur le problème. Olivier
  7. 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
  8. 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
  9. 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
  10. Au temps pour moi OU autant pour moi. Ça n'a pas l'air si simple. En tout cas ça se discute. Olivier
  11. Olivier Eckmann

    Covadis & ExpressTools

    le programme ACETTEST.FAS est bien chargé au démarrage? Olivier
  12. Olivier Eckmann

    Covadis & ExpressTools

    Bonjour, j'avais proposé une solution dans cette discussion (message 5 et 9) qui devrait fonctionner. Olivier
  13. 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
  14. 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
  15. 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
  16. Grand merci pour tout ça. Je teste et je reviens dès que c'est concluant. Olivier
  17. Olivier Eckmann

    autopiste v14

    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
  18. 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
  19. 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
  20. 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
  21. 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
  22. Olivier Eckmann

    covadis 14

    Ça y est, le patch 14.0b est sorti Olivier
  23. 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
  24. dans un bouton ^C^C_dimlinear;\\\_dimcontinue;\ Olivier
  25. 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.
×
×
  • Créer...

Information importante

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