Aller au contenu

(gile)

Moderateurs
  • Compteur de contenus

    12 247
  • Inscription

  • Dernière visite

  • Jours gagnés

    209

Tout ce qui a été posté par (gile)

  1. Je ne me méprends pas, la question posée est bien : Or je pense bien qu'on ne trouve jamais "ByLayer" dans le type de ligne d'un calque. Par contre, dans l'aide pour la propriété Linetype, qui ne s'applique pas uniquement aux calques mais aussi à toutes les entités graphiques et d'autres objets non-graphiques, il est indiqué les types de ligne existant "par défaut" dans tout DWG. De même, on retrouve acLnWtByLayer dans l'énumération des valeurs de Lineweight, même si cette valeur ne peut pas s'appliquer aux calques (cette propriété aussi s'applique à toutes les entités graphique.
  2. Peux-tu poster un exemple de DWG avec un tel calque, je n'ai jamais vu ça.
  3. (gile)

    Recommandé mystérieux ...

    Personnellement, je n'aurais pas cette prétention. Covadis, c'est des centaines de milliers (voire des millions) de lignes de code C++. En plus je suis à la retraite...
  4. (gile)

    Aide aux développeurs

    La page que tu as trouvé est celle de la propriété Layers (au pluriel) des objets Document ou Database (Document.Layers ou Database.Layers) qui permet d'accéder à la collection des calques de ces objets (tout ça est clairement décrit dans cette page). Or ce que tu cherches ce sont les propriétés de l'objet Layer. Les valeurs pour les épaisseurs de ligne (propriété Lineweight des calques comme de tous les objets graphiques) sont les membres d'une énumération. Chaque membre d'une énumération correspond à un entier différent (en liaison tardive on utilise cet entier). -3 est la valeur de acLnWtByLwDefault, soit la valeur par défaut définie dans la variable système LWDEFAULT. acLnWtByLayer = -1 acLnWtByBlock = -2 acLnWtByLwDefault = -3 acLnWt000 = 0 acLnWt005 = 5 acLnWt009 = 9 acLnWt013 = 13 ...
  5. Dans le code que tu montres, tu affectes les valeurs aux variables Dict1, Dict2 et DaRec mais on ne voit pas comment ce variables sont déclarées. Encore une fois, je connais très mal le VB(A), mais il me semble qu'il devrait y avoir des déclarations du style: Dim Dict1 As Object Dim Dict2 As Object Dim DaRec As Object
  6. (gile)

    pb de trigo

    Cette syntaxe est aussi celle de F#, elle est proche de celle de C#.
  7. (gile)

    pb de trigo

    ce truc je ne suis même pas sûr de l'avoir vu à l'école... Tu l'auras appris à l'école de CADxp (voir aussi cette page).
  8. (gile)

    pb de trigo

    Le fait que tu parles de trigo m'a lancé dans cette voie, mais ce problème se résout simplement avec le théorème de Pythagore. Ce que tu cherches correspond à la flèche d'un arc dont tu connais le rayon (2000) et la demi corde (750) : 2000.0 - sqrt (2000.0 * 2000.0 - 750.0 * 750.0)
  9. (gile)

    pb de trigo

    Petite explication. L'angle entre la corde d'un arc (AC) et la tangente à l'arc à une de ses extrémités (AB) est égal à la moité de l'angle de l'arc (AOC). Le sinus de l'angle AOC est égal à AB/CO. La tangente de l'angle BAC (moitié de AOC) est égale à BC/AB.
  10. (gile)

    pb de trigo

    Salut, 750.0 * tan (asin (750.0 / 2000.0) / 2.0)
  11. Les lispeurs connaissent ça par cœur. Il faut considérer les propriétés comme des paires : le code de groupe suivi de la valeur correspondante. Chaque objet commence par un code de groupe 0 dont la valeur est le nom DXF de l'objet (pour un type de ligne : LTYPE). Exemple : 0 LTYPE 5 2A8 330 5 100 AcDbSymbolTableRecord 100 AcDbLinetypeTableRecord 2 AXES 70 0 3 Centre ____ _ ____ _ ____ _ ____ _ ____ _ ____ 72 65 73 4 40 50.8 49 31.75 74 0 49 -6.349999999999999 74 0 49 6.349999999999999 74 0 49 -6.349999999999999 74 0 Doit être lu comme : (0 . "LTYPE") => type d'entité (5 . "2A8") => handle (330 . "5") => handle de l'objet propriétaire (la table des types de lignes) (100 . "AcDbSymbolTableRecord") => Marqueur de sous-classe (100 . "AcDbLinetypeTableRecord") => Marqueur de sous-classe (2 . "AXES") => nom du type de ligne (70 . 0) => valeur de drapeau (dépendant d'une xref si bits 16, 32 ou 64) (3 . "Centre") => description (72 . 65) => code d'alignement (valeur ASCII de A) (73 . 4) => nombre d'éléments du type de ligne (40 . 50.8) => longueur totale du motif (49 . 31.75) => longueur du tiret, du point ou de l'espace (une entrée par élément) (44 . 0) => valeur de décalage (49 . -6.35) => longueur du tiret, du point ou de l'espace (74 . 0) => valeur de décalage (49 . 6.35) => longueur du tiret, du point ou de l'espace (74 . 0) => valeur de décalage (49 . -6.35) => longueur du tiret, du point ou de l'espace (74 . 0) => valeur de décalage
  12. Encore une fois, mais ça va être la dernière (j'en ai assez de me répéter), tout est dans l'aide, en plus, la section DXF est en français, alors pas d'excuse...
  13. Depuis AutoCAD 2018, l'aide aux développeurs tous environnements confondus (AutoLISP, ActiveX/VBA, Managed .NET, ObjectARX, JavaScript) est accessible depuis la même page web : https://help.autodesk.com/view/OARX/2018/ENU/ NB : on peut remplacer 2018 par une version ultérieure dans l'URL
  14. Depuis AutoCAD 2018, l'aide aux développeurs tous environnements confondus (AutoLISP, ActiveX/VBA, Managed .NET, ObjectARX, JavaScript) est accessible depuis la même page web : https://help.autodesk.com/view/OARX/2018/FRA/ NB : on peut remplacer 2018 par une version ultérieure dans l'URL
  15. Depuis AutoCAD 2018, l'aide aux développeurs tous environnements confondus (AutoLISP, ActiveX/VBA, Managed .NET, ObjectARX, JavaScript) est accessible depuis la même page web : https://help.autodesk.com/view/OARX/2018/FRA/ NB : on peut remplacer 2018 par une version ultérieure dans l'URL
      • 1
      • Upvote
  16. Après un rapide test, on a ce message si un ou plusieurs HANDLE présents dans le fichier ne sont pas trouvés dans le dessin (ont été effacés par exemple).
  17. Tout dépend de ce que tu as fait dans ton tableau Excel, mais pour que AutoCAD y retrouve ses petits il faut que dans chaque ligne, le maintien (HANDLE) et le nom du block (BLOCKNAME) n'aient pas été modifiés et que dans les colonnes suivantes il n'y ait que des valeurs d'attribut correspondant aux étiquettes en entête (<> si le bloc ne contient pas cet attribut).
  18. Si tu veux lire le DXF comme un fichier texte, il faut que tu l'ouvres avec le bloc-note ou NotePad++ et que tu l'analyses pour voir comment récupérer ce que tu cherches. Sinon, je ne vois pas la différence entre ouvrir et lire un DXF ou un DWG.
  19. Ce n'est pas compliqué, en liaison anticipée, dans le code, on déclare les objets avec leur type fort : Dim layerObj As AcadLayer Ça aide le compilateur (ou l'interpréteur) à exécuter le code plus rapidement et ça permet à l'IDE de contrôler que les propriétés et méthodes sont bien applicables à ce type d'objet et, suivant l'IDE d'aider à coder avec des infobulles, des signalements d'erreur au moment de l'édition, etc. Mais ceci nécessite de référencer les bibliothèques qui, en VBA, sont dépendantes de la version. En liaison tardive, dans le code, en VB(A), on déclare les objets avec le type Object : Dim layerObj As Object Là, l'éditeur ne peut plus donner aucune aide et les erreurs ne seront détectées qu'au moment de l'exécution. C'est le lot de tous les langages dits "à typage dynamique" (LISP, Python, Ruby, etc). Mais avec les langages basé objet (VBA) ou orienté objet (VB.NET, C#) on n'a plus de bibliothèque à référencer. Dans la pratique, comme dit précédemment, on commence en codant en liaison anticipée avec les bibliothèques nécessaires (celles d'AutoCAD quand on code depuis Excel ou inversement) jusqu'à ce qu'on soit satisfait du fonctionnement. Puis, pour diffuser le programme, on supprime les références et on remplace tous les types fort par le type Object. Un bon IDE soulignera les erreurs de type dès qu'on aura supprimé les références.
  20. La fonction dumpallproperties permet de connaitre toutes les propriétés accessible avec getpropertyvalue ou getpropertyvalue pour l'objet passé en argument (le résultat s'affiche dans la fenêtre de texte (F2)). Pour sélectionner un attribut de bloc, tu peux utiliser nentsel : (dumpallproperties (car (nentsel)))
  21. pour le fun en une seule expression LISP (à copier coller dans la ligne de commande : (sslength (ssget "_WP" (mapcar 'cdr (vl-remove-if-not (function (lambda (x) (= (car x) 10))) (entget (car (entsel "\nSélectionnez une polyligne: "))) ) ) '((0 . "INSERT")) ) )
  22. Salut, Je ne pratique pas le VBA mais la méthode FieldCode me semble répondre à la question.
  23. Salut, Une commande créée dans la boite de dialogue de personnalisation de l'interface utilisateur (IUP ou _CUI) à l'aide d'une "macro de commande" doit être ensuite affectée à un bouton (d'une barre d'outil ou du ruban). Elle ne peut pas être appelée directement le ligne de commande. ^C^C au début de la macro, correspond à faire deux fois 'Echap'.
  24. @Luna t'a dit d'où venait l'erreur : Or, def n'existe pas dans ton code, mais par contre, tu connais très bien le nom du bloc... Donc fais simplement : (command-s "_.attsync" "_name" "INFO-LOCAL_100_200")
  25. @Flobott, tu peux voir ce sujet à propos de la syntaxe "VLISP".
×
×
  • 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é