-
Compteur de contenus
12 247 -
Inscription
-
Dernière visite
-
Jours gagnés
209
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par (gile)
-
LISP pour récupérer dans un texte la surface d'une polyligne
(gile) a répondu à un(e) sujet de brunomu dans Routines LISP
TotalArea prend en compte l'aire de l'objet sélectionné (polyligne, région, hachure, mpolygon, ...). Le LISP ne sait pas ce qu'est "une cloison". -
Import/Export d\'attributs avec Excel
(gile) a répondu à un(e) sujet de (gile) dans ObjectARX/DBX, C++, .NET, RealDWG
Voir ma réponse ici. -
Je ne comprends pas ce que tu veux dire. EATT permet d'extraire les attributs des blocs sélectionnés dans un fichier Excel afin de pouvoir modifier les valeurs des attributs et de les ré-injecter dans AutoCAD avec IATT. Mais comme je l'expliquais plus haut, ceci est incompatible avec le fonctionnement dynamique de TotalArea ou TotalPerim.
-
TotalArea et TotalPerim créent un lien entre le ou les objets sélectionné et les attributs du bloc ce qui fait que si on modifie un objet les attributs se mettent à jour automatiquement mais ceci est incompatible avec toute "rétroaction" (modifier la valeur de l'attribut ne modifiera pas le ou les objets liés).
-
Import/Export d\'attributs avec Excel
(gile) a répondu à un(e) sujet de (gile) dans ObjectARX/DBX, C++, .NET, RealDWG
Difficile de diagnostiquer plus à partir de si peu d'informations. As-tu débloqué le zip ? (clic droit > Propiétés > Général > débloquer) As-tu chargé 'ExcelAttribute_19.dll' (et uniquement 'ExcelAttribute_19.dll') avec NETLOAD ? As-tu eu un message d'erreur ? Si le chargement s'est passé sans erreur, quand tu lances la commande EATT, quel message as-tu sur la ligne de commande ? -
Salut, Tu retires l'attribut de la sélection des actions d'étirement en X et en Y. Tu ajoutes une nouvelle action de déplacement pour chaque paramètre de distance. Tu sélectionnes la définition d'attribut (il doit avoir sa propriété Verrouiller la position à Oui). Tu modifies la propriété "Variateur de distance" de l'action de déplacement à 0.5.
-
Exactement, s'il n'y a pas l'application ou un Object Enabler, AutoCAD convertit les objets personnalisés en objets proxy qui peuvent s'afficher en fonction de ce qu'a défini l'application mais n'auront plus leur "intelligence" (les réacteurs persistants en particulier). Ceci vaut autant pour les AutoCAD verticaux (objets AEC par exemple) que pour les applications non Autodesk comme Covadis.
-
@GEGEMATIC Il me semble que quand il parle de Persistent Reactor referencing il parle des réacteurs persistants créés avec ObjectARX dans les objets personnalisés (Custom Objects) ou dans certains objets AutoCAD (comme les cotes ou hachures associatives). Ces réacteurs sont "visibles" dans les listes DXF des entités. Les réacteurs persistants construits en LISP sont spécifiques au LISP comme les ldata (fonctions vlax-ldata-*) d'ailleurs ils sont stockés dans le même type de dictionnaires. Personnellement je n'ai jamais trop utilisé les réacteurs persistants parce que le réacteur est attaché au document mais pas le LISP qui contient la fonction callback et on a une erreur si le réacteur est déclenché alors que le LISP n'est pas chargé (j'ai toujours préférer reconstruire les réacteurs depuis le LISP comme ça je suis sûr que le callback est chargé). Ce problème ne se pose pas avec les objets personnalisés puisque les objets et les réacteur sont dans la même application.
-
Désactiver les accrochages 2 (le retour)
(gile) a répondu à un(e) sujet de (gile) dans ObjectARX/DBX, C++, .NET, RealDWG
@didier C'est ce que je dis dans la réponse au dessus : je pourrais modifier ma réponse (pas de problème), mais une fois que tu as eu fait ta blague avec ma bourde, je ne peux plus la corriger, la bourde, sinon ta blague devient caduque, alors je la laisse... -
[Résolu] Masque arrière plan pour les Textes multiples
(gile) a répondu à un(e) sujet de Curlygoth dans Débuter en LISP
Ce n'est pas une commande. C'est une fonction LISP avec arguments (lis les commentaires). Tu dis vouloir paramétrer la couleur et/ou le décalage, il faut bien passer ces paramètres en argument. Dans ta macro VBA, pour mettre un masque en couleur 31 avec un décalage de 1.2 sur un MTEXT dont le handle est assigné à la variable 'handle', ça devrait être un truc comme ça : ThisDrawing.SendCommand("(setBackground & Chr34 & handle & Chr34 & "1 31 1.2)") ThisDrawing.SendCommand("(setBackground & Chr34 & handle & Chr34 & "1 31 1.2)") -
[Résolu] Masque arrière plan pour les Textes multiples
(gile) a répondu à un(e) sujet de Curlygoth dans Débuter en LISP
Ça devrait répondre à ta demande. ;; setBackground ;; Masque d'arrière plan de texte multiligne ;; ;; Arguments ;; handle : handle du mtext ;; fill : type de remplissage 1 ou 3 (1 pour la couleur spécifiée ; 3 pour la couleur de l'arrière plan ;; color : couleur de l'index entre 1 et 255 ;; scale : facteur d'achelle du masque ;; ;; Exemple : (setBackground "2AE9" 1 31 1.2) (defun setBackground (handle fill color scale / l) (setq l (entget (handent handle))) (entmod (append (vl-remove-if (function (lambda (x) (member (car x) '(90 63 421 431 45 441))) ) l ) (list (cons 90 fill) (cons 63 color) (cons 45 scale) ) ) ) ) -
[Résolu] Masque arrière plan pour les Textes multiples
(gile) a répondu à un(e) sujet de Curlygoth dans Débuter en LISP
Ce que tu demandes est possible, mais il faudrait préciser ce que tu appelles "un possibilité". -
Désactiver les accrochages 2 (le retour)
(gile) a répondu à un(e) sujet de (gile) dans ObjectARX/DBX, C++, .NET, RealDWG
Maintenant, je ne peux plus corriger... -
On ne va pas encore une fois re-raconter l'historique de l'annonce de l'abandon du VBA par Microsoft mais entre le moment cette annonce et celui où Microsoft a fini par mettre à jour du VBA pour les système 64 bits, le VBA AutoCAD s'exécutait hors processus (out-of-process) sur les versions 64 bits (qui commençait à devenir la norme) avec des performance calamiteuses, CF ce sujet.
-
Désactiver les accrochages 2 (le retour)
(gile) a répondu à un(e) sujet de (gile) dans ObjectARX/DBX, C++, .NET, RealDWG
J'ai modifié le téléchargement le ZIP contient désormais un installeur et le plugin fonctionne avec toutes les versions d'AutoCAD depuis 3013. -
Salut, Tu peux essayer avec la propriété Worhsheet.UsedRange. (vlax-get-property (vlax-get-property *ExcelApp% "ActiveSheet") "UsedRange")
-
Variable hauteur de texte par défault
(gile) a répondu à un(e) sujet de Curlygoth dans Débuter en LISP
Pour revenir au sujet de départ, la valeur dans la boite de dialogue est la hauteur par défaut du style de texte. En VBA, ça devrait être un truc du genre : ThisDrawing.TextStyles.Item("ARIAL").Height = 0.4 La variable système TEXTSIZE stocke la valeur par défaut pour les styles de texte dont la hauteur est 0.0. En VBA, ça devrait être un truc du genre : ThisDrawing.SetVariable("TEXTSIZE", 0.4) -
Variable hauteur de texte par défault
(gile) a répondu à un(e) sujet de Curlygoth dans Débuter en LISP
Si je peux me permettre un peu de théorie, l'API* COM** d'AutoCAD est l'API AutoCAD utilisé par le VBA AutoCAD (qui n'accède qu'a celle-ci). Cette API est aussi accessible en LISP (via les fonctions vla- pour Visual LISP Automation), en NET ou en ObjectARX. S'il s'agit vraiment d'une extension qui apporte un plus en LISP, ce n'est pas vraiment le cas en .NET ou ObjectARX mais certaines fonctionnalités comme les "préférences" (ce qu'on paramètre depuis la commande Options) ne sont accessible que via COM. * Interface de Programmation pour Application ** parfois appelée Automation ou ActiveX qui est en fait la couche qui permet d'accéder à cette interface. Il s'agit d'une technologie Windows. -
La notion de bulge est un moyen très efficient pour conserver l'information concernant la courbure d'un segment de polyligne avec un seul nombre (notamment dans le DXF), mais du coup, c'est moins pratique pour faire directement des calculs. D'un autre côté, les fonctions vlax-curve exposent à l'environnement Visual LISP (pas d'équivalent en VBA ou en AutoLISP sur MAC) une petite partie d'une API ObjectARX et .NET qui définit des objets purement géométriques (sans représentation graphique) utilisés pour les calculs géométriques, celle concernant les objets curvilignes. C'est aussi dans cet environnement que la notion de "paramètre" pour les objets curvilignes est définie (à ma connaissance, elle n'existe dans les données DXF des entités que pour les ellipses, CF un récent challenge). J'avais essayé, il y a quelques temps maintenant de démarrer un sujet sur les paramètres des objets curvilignes. En .NET la classe Curve2d (il y a un équivalent Curve3d) est la classe de base pour, entre autres, les classes CompositeCurve2d, CircularArc2d et LinearEntity2d, cette dernière étant la classe de base pour LineSegment2d. Dans cet environnement, une polyligne correspond à un CompositeCurve2d qui est une succession de LineSegment2d ou de CircularArc2d jointifs. Avec .NET on récupère directement l'objet géométrique correspondant à un segment de polyligne en arc via la méthode GetArcSegment2dAt(index) et on accède ainsi directement à toutes ses propriétés.
-
Autrement dit, c'est le rapport entre la flèche de l'arc et la moitié de sa corde.
-
"Plus accessible" c'est complètement subjectif (et sans compter le fait qu'il faut installer un module). "Un poil moins de performance" il semblerait que ce soit plutôt l'inverse, voir les articles de Fenton Webb "The Right Tool for the Job" notamment "part 3" qui contient quelques tests de performance.
-
LISP pour récupérer dans un texte la surface d'une polyligne
(gile) a répondu à un(e) sujet de brunomu dans Routines LISP
Je réalise un truc tout à coup. C'est bien le même @DenisHenqui a répondu à ce message ? -
LISP pour récupérer dans un texte la surface d'une polyligne
(gile) a répondu à un(e) sujet de brunomu dans Routines LISP
Dans le screencast de @Olivier Eckmann , on peut voir l'erreur dès que le code est collé dans la fenêtre de l'éditeur grâce à la coloration syntaxique. Les fonctions natives doivent apparaître en bleu, si ce n'est pas le cas, c'est qu'il y a une faute d'orthographe dans le nom de la fonction. PS : je pense que ton message ci-dessus n'est pas dans le bon sujet... -
[RESOLU] Numérotation automatique des sommets d'une polyligne
(gile) a répondu à un(e) sujet de Hydro8 dans Débuter en LISP
Ça devrait le faire comme ça : (defun c:toto (/ massoc mkBlock mkInsert leftPad getDVpoints ss n i pls pts) (defun massoc (key alst) (if (setq alst (member (assoc key alst) alst)) (cons (cdar alst) (massoc key (cdr alst))) ) ) (defun mkBlock () (if (null (tblsearch "style" "Adam")) (entmake '((0 . "STYLE") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "Adam") (70 . 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 0.2) (3 . "tahoma.ttf") (4 . "") ) ) ) (entmake '((0 . "BLOCK") (8 . "0") (2 . "DV-point") (70 . 2) (10 0.0 0.0 0.0) ) ) (entmake '((0 . "POINT") (8 . "0") (62 . 0) (10 0.0 0.0 0.0) ) ) (entmake '((0 . "ATTDEF") (8 . "!ADAM-POINTS") (10 0.0 0.0 0.0) (40 . 0.3) (1 . "") (7 . "Adam") (71 . 0) (72 . 1) (11 0.0 0.0 0.0) (3 . "Matricule") (2 . "MAT") (70 . 0) (74 . 1) ) ) (entmake '((0 . "ENDBLK"))) ) (defun mkInsert (pt n) (entmake (list (cons 0 "INSERT") (cons 2 "DV-point") (cons 8 "POINTS") (cons 10 pt) (cons 66 1) ) ) (entmake (list (cons 0 "ATTRIB") (cons 1 (itoa n)) (cons 2 "MAT") (cons 7 "Adam") (cons 8 "!ADAM-POINTS") (cons 10 '(0.0 0.0 0.0)) (cons 11 pt) (cons 40 0.3) (cons 70 0) (cons 71 0) (cons 72 1) (cons 74 1) ) ) (entmake '((0 . "SEQEND"))) (1+ n) ) (defun leftPad (str char num) (repeat (max (- num (strlen str)) 0) (setq str (strcat char str)) ) str ) (defun getDVpoints (/ s i l) (if (setq s (ssget "_X" (list (cons 0 "INSERT") (cons 2 "DV-point") (cons 410 (getvar 'ctab)) ) ) ) (repeat (setq i (sslength s)) (setq l (cons (cdr (assoc 10 (entget (ssname s (setq i (1- i)))))) l ) ) ) ) ) (if (and (setq ss (ssget '((0 . "LWPOLYLINE") (-4 . "&") (70 . 1)))) (setq n (getint "\nPremier numéro: ")) ) (progn (if (null (tblsearch "block" "DV-point")) (mkBlock) (setq pts (getDVpoints)) ) (repeat (setq i (sslength ss)) (setq pls (cons (entget (ssname ss (setq i (1- i)))) pls)) ) (foreach pl (vl-sort pls '(lambda (l1 l2) '(< (leftPad (cdr (assoc 5 l1)) "0" 16) (leftPad (cdr (assoc 5 l2)) "0" 16) ) ) ) (foreach p (massoc 10 pl) (if (null (vl-some '(lambda (x) (< (distance p x) 1e-8)) pts)) (setq pts (cons p pts) n (mkInsert p n) ) ) ) ) ) ) (princ) ) -
[RESOLU] Numérotation automatique des sommets d'une polyligne
(gile) a répondu à un(e) sujet de Hydro8 dans Débuter en LISP
La routine ne "regarde" pas s'il y en a déjà, elle n'en met pas là où elle vient d'en mettre durant une exécution. Si tu la relances, elle remettra tous les points.
