-
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)
-
Salut, Le point d'insertion d'une référence de bloc retourné dans le code DXF 10 est donné en coordonnées dans le SCO (le sytème de coordonnées de l'objet). On peut traduire ces coordonnées dans un autre système de coordonnées avec la fonction trans. Exemple : (setq bl (car (entsel "\nSélectionnez un bloc))) (setq ins_pt (cdr (assoc 10 (entget bl)))) Pour traduire ces coordonnées dans le SCU courant : (trans ins_pt bl 1) Pour traduire ces coordonnées dans le SCGénéral : (trans ins_pt bl 0) Tu peux voir la fonction trans dans l'aide aux développeurs >> AutoLISP Refernce >> AutoLISP Functions et ce sujet [Edité le 23/9/2006 par (gile)]
-
Si tu pouvais donner un lien... merci d'avance.
-
Salut Phil, Je dois avouer ne pas tout comprendre à ta réponse. Toujours est-il que l'exemple de la factorielle pour expliquer la récursivité doit être mauvais même si c'est le plus souvent utilisé. Quand on s'attache plus à l'exemple qu'a ce qu'il est sensé illustrer, c'est que l'exemple est mal choisi. Mon propos était plus d'essayer d'expliquer la forme récursive en LISP que la fonction factorielle dont je ne me sers jamais non plus (ça sert en calcul de probabilités si mes souvenirs sont bons). [Edité le 23/9/2006 par (gile)]
-
Salut, Un bouquin assez récent en français qui traite d'AutoLISP, et en anglais, une Bible du développeur VisualLISP. L'aide d'AutoCAD, bien qu'en anglais, est plutôt bien faite, c'est avec elle que j'ai appris. Je pense qu'il est préférable de commencer avec AutoLISP pour bien maitriser la syntaxe LISP, puis passer à VisualLISP qui correspond à un supplément de fonctions.
-
Crrer un tableau avec entmake
(gile) a répondu à un(e) sujet de pingoo666 dans Pour aller plus loin en LISP
Salut, Il n'est pas nécessaire de spécifier tous les groupes pour créer une entité avec entmake. Et suivant les entités certains groupes sont nécessaire ou pas (par exemple les groupes 100 sont nécessaires pour une polyligne, pas pour un ligne ou un cercle). Des essais permettent de savoir lesquels sont indipensables ou pas, mais je pense que les groupes 342 et343 ne sont pas à spécifier. [Edité le 22/9/2006 par (gile)] -
Salut, Tu peux voir ce sujet
-
Salut, LISP, acronyme de LISt Processing, est un langage de programation inventé par John McCarthy en 1958. C'est le deuxième plus vieux langage de programmation, il classé parmis les langages fonctionnels. Voir ici. AutoLISP est dialecte du LISP dédié à AutoCAD (et ses clones). VisualLISP est une extension d'AutoLISP permettant l'accès aux fonctions ActiveX et VBA, et donc le rapproche des langages "orientés objet". [Edité le 22/9/2006 par (gile)]
-
Je ne connais pas le VBA, mais on utilise les mêmes fonctions en VisualLISP. La fonction AddExtrudedSolidAlongPath nécessite 3 arguments : 1°) l'objet (espace objet, espace papier ou bloc) 2°) la region à extruder 3°) le chemin (ligne, polyligne, cercle, ellipse, spline ou arc) peu importe si cet objet a été acquis avec un GetEntity, ou crée par le programme avec un AddLine, AddLightWeightPolyline ou autre. Revois l'exemple, si je comprends bien, le chemin (une spline) est créé par la routine puis passé comme argument à AddExtrudedSolidAlongPath.
-
Salut et bienvenue, Oui c'est possible, tu trouveras un exemple dans l'Aide aux dévellopeurs >> ActiveX and VBA Reference >> Code Examples >> AddExtrudedSolidAlongPath Example
-
Vois ce sujet
-
Salut, Voici un petit LISP. Pour éviter les imprécisions évoquées par Didier, il est nécessaire de sélectionner successivement un point et le texte qui lui est associé. Le bloc (point + attribut) est inséré à l'endroit du point. Au premier appel de la fonction si le bloc n'existe pas dans le dessin, il est créé. La hauteur de texte de l'attribut est fonction de la valeur des variables système TEXTSIZE et DIMSCALE. ;;; MakePointBlock Crée le bloc "PointAltBlock" (defun makepointblock (/ AcDoc Block) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Block (vla-add (vla-get-blocks AcDoc) (vlax-3d-point '(0 0 0)) "PointAltBlock" ) ) (vla-addPoint Block (vlax-3d-point '(0 0 0))) (vla-addAttribute Block (getvar "TEXTSIZE") acAttributeModePreset "" (vlax-3d-point (list (/ (getvar "TEXTSIZE") 2) 0 0)) "Altitude" "0.0" ) ) ;;; TxtPt2Block Change le point et le texte associé en bloc avec attribut (defun c:TxtPt2Block (/ AcDoc Space pt text ref) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (if (not (tblsearch "BLOCK" "PointAltBlock")) (MakePointBlock) ) (while (and (setq pt (car (entsel "\nSélectionnez un point: "))) (= (vla-get-objectName (setq pt (vlax-ename->vla-object pt))) "AcDbPoint" ) (setq text (car (entsel "\nSélectionnez le texte associé: ")) ) (wcmatch (vla-get-objectName (setq text (vlax-ename->vla-object text)) ) "*Text" ) ) (vla-StartUndoMark AcDoc) (setq ref (vla-InsertBlock Space (vla-get-Coordinates pt) "PointAltBlock" 1.0 1.0 1.0 0.0 ) ) (vla-put-TextString (car (vlax-invoke ref 'GetAttributes)) (vla-get-TextString text) ) (vla-ScaleEntity (car (vlax-invoke ref 'getAttributes)) (vla-get-Coordinates pt) (getvar "DIMSCALE") ) (vla-delete text) (vla-delete pt) (vla-EndUndoMark AcDoc) ) (princ) ) PS : Je ne suis pas géomètre et ne connais rien au MNT, il y a certainement des choses à modifier, moi et/ou d'autres pourront sûrement t'aider à le faire. [Edité le 21/9/2006 par (gile)]
-
Salut, Après avoir chargé l'image (Parcourir >> Ouvrir >> host it !) tu copies le dernier lien (encadré en rouge sur l'image ci dessous) : http://img222.imageshack.us/img222/2388/sanstitreer1.png Puis tu colles le lien entre les balises "Image" http://img233.imageshack.us/img233/5605/sanstitre2tz8.png
-
La personnalisation de l'interface utilisateur est enregistrée dans le fichier .CUI courant.
-
Salut, Tu ne dois pas utiliser d'options nécessitant cette boite de dialogue.
-
Integre du texte dans un bloc automatiquement
(gile) a répondu à un(e) sujet de christ-94 dans AutoCAD 2006
Salut, Tu tapes saisie à la ligne de commande. (defun c:saisie ...) -
Récupération point d\'insertion d\'un texte en lisp
(gile) a répondu à un(e) sujet de pixel61 dans Routines LISP
Tu dois utilser des textes simples, sinon tu n'aurais pas ce soucis de point d'insertion, j'ai répondu un peu vite, ci dessus. Dz toutes façons voilà un petit LISP qui fonctionne avec les deux types de texte, le point tient compte de la justification et est retourné en coordonnées du SCU courant pour la fonction (command ...) (defun c:test (/ ent e_lst ins_pt) (while (not (and (setq ent (car (entsel))) (wcmatch (cdr (assoc 0 (setq e_lst (entget ent)))) "*TEXT") ) ) ) (if (= (cdr (assoc 0 e_lst)) "TEXT") (if (and (zerop (cdr (assoc 72 e_lst))) (zerop (cdr (assoc 73 e_lst))) ) (setq ins_pt (trans (cdr (assoc 10 e_lst)) ent 1)) (setq ins_pt (trans (cdr (assoc 11 e_lst)) ent 1)) ) (setq ins_pt (trans (cdr (assoc 10 e_lst)) 0 1)) ) (command "_line" "_non" ins_pt pause "") (princ) ) [Edité le 20/9/2006 par (gile)] -
Récupération point d\'insertion d\'un texte en lisp
(gile) a répondu à un(e) sujet de pixel61 dans Routines LISP
Salut, les entités texte et mtexte ayant des différences marquées à ce niveau, pourrait tu me dire si c'est avec les uns, les autres ou les deux que tu veux travailler. -
Salut, As tu essayé de prendre, dans la palette d'outils "Matériaux", dans l'onglet "Portes et fenêtres" le matériau "Verres.Vitre.Clair" ? Chez moi ça marche, dans la fenêtre : http://img172.imageshack.us/img172/1926/verre1yn3.png et dans le rendu : http://img114.imageshack.us/img114/6613/verre2vb4.png
-
Salut, Une routine LISP pour faire un jeu de sélection en filtrant les blocs du dessin suivant la valeur d'un attribut éditable. On peut utiliser directement la sous routine att_filter en renseignant directement les arguments nom du bloc, nom de l'étiquette et valeur de l'attribut : (att_filter "tranchee" "longueur" "12.0") ou utiliser la commande att_fltr_sel et répondre aux invites à la ligne de commande. Si la valeur de l'attribut et le filtre pour cette valeur sont des nombres (sous forme de chaine de caractère) il sont comparés comme des nombres : 12 = 12.0 = 12.00. ;; Retourne un jeu de sélection en filtrant le nom du bloc, et la valeur d'un attribut (defun att_filter (bloc etiq val / ss n ref att att_lst) (if (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 bloc)))) (repeat (setq n (sslength ss)) (setq ref (ssname ss (setq n (1- n)))) (setq att (entnext ref)) (while (/= (cdr (assoc 0 (setq att_lst (entget att)))) "SEQEND") (if (= (cdr (assoc 2 att_lst)) (strcase etiq)) (if (and (numberp (read (cdr (assoc 1 att_lst)))) (numberp (read val)) ) (if (/= (atof (cdr (assoc 1 att_lst))) (atof val)) (ssdel ref ss) ) (if (/= (cdr (assoc 1 att_lst)) val) (ssdel ref ss) ) ) ) (setq att (entnext att)) ) ) ) ss ) ;; Sélectionne tous les blocs du nom spécifié ayant la valeur spécifiée pour l'attribut spécifié (defun c:att_fltr_sel (/ bloc etiq val) (setq bloc (getstring "\nEntrez le nom du bloc: ")) (setq etiq (getstring "\nEntrez l'étiquette de l'attribut: ")) (setq val (getstring "\nEntrez la valeur de l'attribut: ")) (sssetfirst nil (att_filter bloc etiq val)) (princ) ) [Edité le 19/9/2006 par (gile)]
-
Salut, Tout dépend du type d'objet, seuls les solides 3D ont un volume les objets surfaciques ou linéaire n'en on pas (normal, non ?...). J'oubliais le volume apparaît dans les propriétés mécaniques de la région (commande PROPMECA ou _MASSPROP) [Edité le 19/9/2006 par (gile)]
-
Si tu veux, mais pas forcément. Mais il est impératif que le dossier dans lequel est enregistré latt.dcl soit dans le chemin de recherche d'AutoCAD (Menu Outils >> Options... onglet Fichiers)
-
Blocs Dyn : Affichage de la valeur d\'un parametre lin
(gile) a répondu à un(e) sujet de xav83 dans AutoCAD 2006
Une autre idée : Tu crées un style de cote en supprimant les lignes d'attache et les lignes de cote. Tu fais une cote dans ton bloc qui correspond à ton paramètre d'étirement et tu inclus cette cote aux objets subissant l'action d'étirement. La cote devrait suivre dynamiquement l'étirement du bloc. -
Blocs Dyn : Affichage de la valeur d\'un parametre lin
(gile) a répondu à un(e) sujet de xav83 dans AutoCAD 2006
Salut, Tu peux retrouver la valeur de la distance dans la fenêtre de propriété, dans la liste retournée par la commande LISTE (_list) ou en faisant une extraction d'attributs avec la commande EXTATTBE (_eattext) même si le bloc ne contient pas d'attributs. -
Tu ne devrais avoir à re-spécifier que les dossier que tu as ajoutés au chemin de recherche. Les différents chemins sont stockés dans la variable système ACADPREFIX
-
Salut, Le fichier latt.dcl est la description de la boite de dialogue appelée par latt.lsp pendant son exécution. Il doit être enregistré sous latt.dcl dans un dossier du chemin de recherche des fichiers de support. Si le fichier latt.dcl n'est pas trouvé, la routine avorte et renvoie ce message : "Le fichier LATT.DCL n'a pas été trouvé."
