Carboleum
Membres-
Compteur de contenus
228 -
Inscription
-
Dernière visite
-
Jours gagnés
2
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Carboleum
-
Je viens de m'appercevoir que la réponse a déjà été donnée sur l'autre sujet! haaa, saleté de doublons!
-
à partir du code de wookichu, remplace (ssget) par (car (entsel)), ca marchera mieux ;-) Si tu tiens à ne pas devoir cliquer sur un objet mais sur les points, tu peux créer temporairement la ligne que divide va diviser: (setq ligne (command "_line" (setq p1 (getpoint)) (getpoint p1) "")) (setq ss (entlast)) en fin de routine, n'oublies pas de virer la ligne temporaire...
-
_copy _all *0,0,0 *0,0,1e99 _copy _all *0,0,0 *0,0,-1e99 ou flatten si tu as les express-tools
-
Un problème de mémoire j'ai envie de dire. Combien as-tu de RAM?
-
Oui, et je ne disais rien d'autre là http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=32295 comme quoi hein! ;-)
-
La classe!
-
???... en fait, ca ne dépasse pas z, car c'est pour numéroter avec des lettres. Je l'avais prévenu au début. t'es faché ?!??
-
On va mettre une petite boucle while alors: (defun c:a++ ( / a++ ent) (defun a+n (n a / l) (vl-list->string (reverse (cons (+ n (car (setq l (reverse (vl-string->list a))))) (cdr l))))) (setq *n* (cond (*n*) (0))) (while (progn (initget "Init") (if (= "Init" (setq ent (entsel "Pick text (i for initialisation): "))) (setq *n* 0 ent (entsel "Pick text: "))) ent) (entmod (subst (cons 1 (a+n (setq *n* (1+ *n*)) (cdr (setq ass (assoc 1 (setq ent (entget (car ent)))))))) ass ent))))
-
Oui Gile, il est plus prudent de l'encapsuler (*error* devient locale) dans la fonction pour ne pas modifier la fonction *error* générale.
-
Si quelqu'un pouvais modifier mon lisp ;-) comme suit.... (defun c:a++ ( / a++ ent) (defun a+n (n a / l) (vl-list->string (reverse (cons (+ n (car (setq l (reverse (vl-string->list a))))) (cdr l))))) (setq *n* (cond (*n*) (0))) (initget "Init") (if (= "Init" (setq ent (entsel "Pick text (i for initialisation): "))) (setq *n* 0 ent (entsel "Pick text: "))) (entmod (subst (cons 1 (a+n (setq *n* (1+ *n*)) (cdr (setq ass (assoc 1 (setq ent (entget (car ent)))))))) ass ent))) Pour réinitialiser, tapes i puis au lieu de sélectionner un texte.
-
?valeur attribut dynamique en fonction selection dans une liste consultation?
Carboleum a répondu à un sujet dans AutoCAD 2011
non, tu parles de champs et d'attributs, déjà, c'est pas la même chose. et la liste de sélection, c'est quoi ? un menu contextuel, j'imagine. c'est trop vague, je suis désolé. a + -
?valeur attribut dynamique en fonction selection dans une liste consultation?
Carboleum a répondu à un sujet dans AutoCAD 2011
Tu as mis un lien vers une image qui est sur ton disque dur, mais, tu sais, on a pas accès à ton disque dur ;-) -
un texte, pas un texte multiple! un texte fait avec la commande _TEXT (quoique dans ce cas, ca aurait du marcher) [Edité le 22/4/2011 par Carboleum]
-
Tu avais parlé de texte, hum... (defun c:a++ ( / a++) (defun a+n (n a / l) (vl-list->string (reverse (cons (+ n (car (setq l (reverse (vl-string->list a))))) (cdr l))))) (setq *n* (cond (*n*) (1))) (entmod (subst (cons 1 (a+n (setq *n* (1+ *n*)) (cdr (setq ass (assoc 1 (setq ent (entget (car (entsel))))))))) ass ent))) Bon, Tu écris un texte (pas un texte multiple), 'Mur A", tu le copie partout où tu veux, puis tu utilise la routine a++ sur chacun des textes; Pour réinitiliser le comptage: (setq *n* nil)
-
Chez moi, ca marche, il faut sélectionner un texte qu'est ce que tu sélectionne comme objet ?
-
ok! je te fais une fonction complète alors: (defun c:a+ ( / a+ ass ent) (defun a+ (a / l) (vl-list->string (reverse (cons (1+ (car (setq l (reverse (vl-string->list a))))) (cdr l))))) (entmod (subst (cons 1 (a+ (cdr (setq ass (assoc 1 (setq ent (entget (car (entsel))))))))) ass ent))) Tu charges ca, puis tu la lances en tapant "a+", alors tu cliques sur un texte. Mais je vois déjà que tu vas me demander de pouvoir compter... ca arrive ;-)
-
Je ne connais pas l'outil de rebcao, mais en lisp, l'un incrément alphanumérique peut se faire comme ceci: (defun a+ (a / l) (vl-list->string (reverse (cons (1+ (car (setq l (reverse (vl-string->list a))))) (cdr l))))) avec un gros bug après le "z" Si tu n'arrives pas à insérer ce code dans l'outil de Rebcao (j'imagine qu'il est en DIESEL, ca va donc pas être facile ;) Sinon, entmod, subst, assoc, entget et entsel sont tes amies. (entmod (subst (cons 1 (a+ (cdr (setq ass (assoc 1 (setq ent (entget (car (entsel))))))))) ass ent)) RMQ, ce dernier code te servira toute ta vie (moyennant qques modifs :-) [Edité le 22/4/2011 par Carboleum]
-
Ce sont des blocs anonymes crées par une autre application. Le plus simple est (je pense) de les exploser. Je ne connais pas d'autres moyens d'y accéder.
-
Comme ca, non,,, on a pas assez d'info. Commences par nous montrer ton code et dis nous ce que tu cherches à faire. Tu peux avoir beaucoup plus d'info sur l'erreur en redéfinissant la fonction *error* comme suit: (defun *error* (m) (vl-bt)) à la suite de quoi tu relances le code. Tu verras mieux où se situe l'erreur. à +
-
Charset de acad_strlsort
Carboleum a répondu à un(e) sujet de Carboleum dans Pour aller plus loin en LISP
Salut Patrick, merci por ta réponse. J'ai en effet fait quelques tests: j'ai mis quelques fichiers sur un répertoire test, puis: (mapcar 'print (acad_strlsort (vl-directory-files "c:/__Lisp/mngt/test"))) "." ".." "__List_handling.lsp" "__Math.lsp" "__String_handling.lsp" "_3d.lsp" "_Make.lsp" "_Matrix.lsp" "_String.lsp" "Ascii.lsp" "B-test.lsp" "bl-macro.lsp" "bl-share.lsp" "expt.lsp" acad_strlsort semble complètement faire fi de la casse des caractères. Ca c'est pas un problème. Par contre, je ne trouve aucune table de caractère (Ascii, ISO-8859-1, Windows-1252, etc.) qui place le underscore avant les chiffres. La page http://autocad.xarch.at/news/faq/misc/strlsort-bug.html donne bien l'ordre de tri utilisé par acad_strlsort, mais pas le nom de la table de caractères (charset) qui lui correspond. J'ai juste besoin de connaitre ce nom, afin d'utiliser ce même charset dans ma programmation PERL. Si quelqu'un a des info là-dessus ?... je suis preneur! [Edité le 21/4/2011 par Carboleum] -
Salut à tous, Pour charger nos lisps, nous utilisons un répertoire spécifique et une fonction qui charge tous les *.lsp de ce répertoire. Or cette fonction trie les noms de fichiers via (acad_strlsort). Fonction qui ne trie manifestement pas comme les autre ;-) (cfr http://autocad.xarch.at/news/faq/misc/strlsort-bug.html) Je gère ces lisps via un programme de ma composition écrit en PERL qui me permet de déterminer les dépendances (telle fonction utilise telle fonction, etc.) J'ai besoin de trier les fichiers *.lsp de la même façon qu'AutoCAD ne les trie via (acad_strlsort). De cette façon, en cas de fonctions doublons, j'obtiens facilement, dans mon prog PERL, la dernière version chargée de la fonction en double; et donc la version réellement utilisée par AutoCAD. Bref, pour que PERL trie comme acad_strlsort, j'ai besoin de connaitre la table des caractères qu'utilise acad_strlsort. Est-ce que quelqu'un a des info là-dessus ? Merci d'avance
-
sisi, tu dois juste taper _wblock au clavier puis sur la touche [entree]
-
Choix d\'un langage de programmation (AutoCAD LT)
Carboleum a répondu à un(e) sujet de Carboleum dans ObjectARX/DBX, C++, .NET, RealDWG
Merci du tuyau, je vais regarder à ca! Il n'est pas possible d'écrire un petit truc, le compiler et l'insérer dans AutoCAD LT si je comprend bien? Du genre C++ vers ARX ou C#? -
Bon courage chez les ingé ;-) Ayant un problème similaire, j'ai ouvert un fil ici: http://www.cadxp.com/sujetXForum-32478.htm Tu peux toujours y jeter un petit coup d'oeil @+
-
Choix d\'un langage de programmation (AutoCAD LT)
Carboleum a posté un sujet dans ObjectARX/DBX, C++, .NET, RealDWG
Bonjour, Après une décennie de programmation en AutoLISP, on me demande de distribuer quelques fonctions simples mais très utiles pour notre méthode de travail à nos bons client pour qu'il puissent utiliser nos fichiers DWG confortablement. Évidemment, nos clients sont sous LT. :casstet: Ces fonctions sont extrêmement simple, et pourraient être traduites en DIESEL. Malheureusement DIESEL ne permet pas la gestion des erreur (defun *error* (m) blablabla), ce qui n'est pas très propre. Ayant entendu qu'AutoDESK avait bridé l'interpretteur LISP d'ACAD LT mais qu'en compilant quelque chose, peut-être que... , je me suis mis à googeliser à ce sujet. Au fil de mes recherches ma confusion grandissait. LT comprend le LISP mais ne peux pas le charger, LT comprend le FAS mais ne peux pas le charger, pourtant certains fichier support sont en FAS, même chose pour ARX. Les éditeurs de logiciels tiers orientent l'information pour nous "refourguer le camelote". Bref, c'est pas très clair tout ca. Ma question est la suivante: Comment on programme sous AutoCAD LT; quel langage C++, .NET ? comment on charge sous LT ? Faut-il le compiler ? sous quel format ? J'ai lut Visual Studio, qu'est-ce ? J'ai besoin de pistes pour continuer mes recherches. Merci d'avance
