Jipicad
Membres-
Compteur de contenus
15 -
Inscription
-
Dernière visite
-
Jours gagnés
1
Jipicad a gagné pour la dernière fois le 26 mars 2018
Jipicad a eu le contenu le plus aimé !
Contact Methods
-
Website URL
http://
Jipicad's Achievements
Newbie (1/14)
0
Réputation sur la communauté
-
comment savoir le unit d'un AutoCAD document object
Jipicad a répondu à un(e) sujet de Jipicad dans Visual LISP
Je vois pas se qui n'est pas clair, peux importe autocad ou mechanical ou architecture ... même affaire et si vous prener le temps d'inspecter cette fonction si vous allez tout comprendre (vla-get-Documents (vlax-get-acad-object)) je suis entreint de parler d'object autocad pas nécessairement actif alors me parle pas de systeme variable jveux seulement savoir si le document est en mm ou en pouce le dessin object. Ouvre exemple 5 dessins 3 metric 2 impérial ensuite tape sa (vla-get-Documents (vlax-get-acad-object)) c quoi la propriété de l'objet qui me permet de savoir si le dessin object est en pouce ou en mm -
Bonjour, Je cherche a savoir le unit de mes document autocad, j'utilise (vla-get-Documents (vlax-get-acad-object)) ensuite dans chaque document j'ouvre ModelSpace ensuite Units mais le problème ces que la valeur est a 0 pour tout les documents mais j'ai des dessins impérial et métric je pensais que c'était comme (getvar "MEASUREINIT")) ; 0 English 1 Metric alors je sais pas comment faire ... aider moi Merci et bonne journée
-
vla-save vla-close ... sauvegarder l\'objet et dessin
Jipicad a répondu à un(e) sujet de Jipicad dans Pour aller plus loin en LISP
J'ai 3 dessin d'ouvert dans autocad un vierge, et 2 autre avec des objects a modifier, le dessin qui est actif est celui qui est vierge. Je tape ma commande dans autocad et j'ai encore un erreur error: Automation Error. Error saving the document Ce que je voudrais comme résultat est que mon dessin vierge reste ouvert et les dessins contenant l'object a modifier soit modifier, sauvegarder et fermer (defun readfile (FilePath / File Info ACTIVE) (setq File (open FilePath "r") ACTIVE T ) (while ACTIVE (setq ACTIVE (read-line File) Info (append (list ACTIVE) Info) ) ) (vl-remove nil Info) ) (defun RoundUp (Real / test) (if (= (max Real (+ (fix Real) 0.5)) Real) (setq test (+ (fix Real) 1)) (setq test (fix Real)) ) ) (defun BatchProcess ( / StringThk Directory PlasmaThk THKString Thickness String->List UpperVal LowerVal) (setq Directory "F:/Echange/Jean-Philippe/ProNest/Batch Process/Thickness.txt" PlasmaThk (readfile Directory) ) (vlax-for doc (vla-get-Documents (vlax-get-acad-object)) (vlax-for obj (vla-get-ModelSpace doc) (if (and (= (vla-get-ObjectName obj) "AcDbText") (wcmatch (vla-get-TextString obj) "*THICKNESS*") ) (progn (setq THKString (vlax-get-property obj 'TextString) Thickness (vl-string-left-trim "THICKNESS=" THKString) String->List (vl-string->list Thickness) String->List (reverse (vl-remove-if '(lambda (Int) (or (= Int 76);|L|;(= Int 212);|Ô|;(= Int 112);|p|; (= Int 80);|P|;(= Int 101);|E|;(= Int 116);|t|; (= Int 70);|F|;(= Int 102);|f|;(= Int 108);|l|; (= Int 84);|T|;(= Int 108);|l|;(= Int 244);|ô|; ) ) String->List ) ) ) (repeat (length (vl-remove-if-not '(lambda (Numb) (= Numb 42)) String->List)) (setq String->List (cdr (member 42 String->List)))) (setq Thickness (vl-list->string (reverse String->List))) ; Modify Thickness of drawing for compatibility with PRONEST (setq StringThk (vl-sort (append (list (atof Thickness)) (mapcar '(lambda (X) (atof X) ) PlasmaThk ) ) '(lambda (e1 e2) (< e1 e2)) ) UpperVal (nth (1+ (vl-position (atof Thickness) StringThk)) StringThk) LowerVal (nth (1- (vl-position (atof Thickness) StringThk)) StringThk) ) (if (> (atof Thickness) 4) (progn (cond ((= (RoundUp UpperVal) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos UpperVal 2 3))) ) ((= (RoundUp LowerVal) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos LowerVal 2 3))) ) ) ) (progn (cond ((= (atof (rtos UpperVal 2 1)) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos UpperVal 2 3))) ) ((= (atof (rtos LowerVal 2 1)) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos LowerVal 2 3))) ) (T (setq Thickness (strcat "THICKNESS=" (rtos UpperVal 2 3)))) ) ) ) (vlax-put-property obj 'TextString Thickness) (vla-update obj) (vla-save (vlax-get-property obj 'Document)) ; error: Automation Error. Error saving the document (vla-close (vlax-get-property obj 'Document)) ;;; (vlax-release-object (vlax-get-property obj 'Document)) ) ) ) ) ) en utilisant (vla-close (vlax-get-property obj 'Document) T) j'ai la même erreur, j'ai vérifier qu'il ne sont pas en lecture seule Je comprend pas ce que je fais de pas correct (le dessin vierge est .dwg et les autre a modifier .dxf) je suis seulement capable avec vla-saveas et je dois les sauvegarder d'un nom different ou dans un dossier different, sinon la meme erreur se produit. (vla-saveas doc (strcat "F:\\Echange\\Jean-Philippe\\ProNest\\Dxf\\" (vl-string-right-trim ".dxf" (vlax-get-property doc 'Name))) acR15_DXF ) (vla-close doc) mais un autre questionnement arrive y créer 2 fichier tole3.4.dxf et tole3.4.dxf.dwg ?? je comprend pas ??? Merci et bonne journée -
vla-save vla-close ... sauvegarder l\'objet et dessin
Jipicad a répondu à un(e) sujet de Jipicad dans Pour aller plus loin en LISP
J'ai trouvé, après quelque essai j'en suis arrivé à la conclusion que si un document n'est pas actif impossible de le sauvegarder avec la manière que j'utilise et impossible de fermer un document actif. Voila si vous avez d'autre manière de procédé je suis preneur. -
vla-save vla-close ... sauvegarder l\'objet et dessin
Jipicad a répondu à un(e) sujet de Jipicad dans Pour aller plus loin en LISP
J'ai retravailler ma fonction j'ai ajouté : (setq DrawingName (vlax-get-property doc 'Name) DrawingPath (vl-string-right-trim ".dxf" (vlax-get-property doc 'FullName)) ) au début du vla-for ;;; (vla-saveas (vla-item (vla-get-documents (vlax-get-acad-object)) DrawingName) DrawingPath acR15_DXF) (vla-save (vla-item (vla-get-documents (vlax-get-acad-object)) DrawingName)) (vla-close (vla-item (vla-get-documents (vlax-get-acad-object)) DrawingName )) à la fin de ma boucle le close fonctionne mais pas le save j'obtient l'erreur : Automation Error. Error saving the document -
vla-save vla-close ... sauvegarder l\'objet et dessin
Jipicad a répondu à un(e) sujet de Jipicad dans Pour aller plus loin en LISP
Bon j'ai réglé mon erreur qui n'avait rien avoir avec les object désolé du dérangement mais sauvegarder et fermer les dessins je n'y arrive pas voila la fin de ma fonction : (vlax-put-property obj 'TextString Thickness) ; Je modifi le TextSring de mon object (vlax-release-object obj) ; J'update mon object (vlax-release-object doc) ; Mon document du début n'existe plus (vla-save doc) (vla-close doc) Merci et Bonne journée -
vla-save vla-close ... sauvegarder l\'objet et dessin
Jipicad a répondu à un(e) sujet de Jipicad dans Pour aller plus loin en LISP
Bonjour, J'ai retravailler ma fonction avec les conseils que tu ma donner mais voila je sais pas comment faire pour sauvegarder mon object, le dessin et fermer par la suite j'obtien un erreur: bad argument type: stringp 0.914 je crois que j'utilise les mauvaises fonctions (es-ce que vous auriez une index des fonction vla dans l'aide de vlide il y a rien du tout) Voici mon code : (vl-load-com) (defun BatchProcess (/ Directory PlasmaThk THKString Thickness String->List UpperVal LowerVal) (setq Directory "F:/Echange/Jean-Philippe/ProNest/Batch Process/Thickness.txt" PlasmaThk (readfile Directory) ) (vlax-for doc (vla-get-Documents (vlax-get-acad-object)) (vlax-for obj (vla-get-ModelSpace doc) (if (and (= (vla-get-ObjectName obj) "AcDbText") (wcmatch (vla-get-TextString obj) "*THICKNESS*") ) (progn (setq THKString (vlax-get-property obj 'TextString) Thickness (vl-string-left-trim "THICKNESS=" THKString) String->List (vl-string->list Thickness) String->List (reverse (vl-remove-if '(lambda (Int) (or (= Int 76) ;|L|; (= Int 212) ;|Ô|; (= Int 112) ;|p|; (= Int 80) ;|P|; (= Int 101) ;|E|; (= Int 116) ;|t|; (= Int 70) ;|F|; (= Int 102) ;|f|; (= Int 108) ;|l|; (= Int 84) ;|T|; (= Int 108) ;|l|; (= Int 244) ;|ô|; ) ) String->List ) ) ) (repeat (length (vl-remove-if-not '(lambda (Numb) (= Numb 42)) String->List)) (setq String->List (cdr (member 42 String->List))) ) (setq Thickness (vl-list->string (reverse String->List))) ; Modify Thickness of drawing for compatibility with PRONEST (setq PlasmaThk (vl-sort (append (list (atof Thickness)) (mapcar '(lambda (X) (atof X) ) PlasmaThk ) ) '(lambda (e1 e2) (< e1 e2)) ) UpperVal (nth (1+ (vl-position (atof Thickness) PlasmaThk)) PlasmaThk) LowerVal (nth (1- (vl-position (atof Thickness) PlasmaThk)) PlasmaThk) ) (if (> (atof Thickness) 4) (progn (cond ((= (RoundUp UpperVal) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos UpperVal 2 3))) ) ((= (RoundUp LowerVal) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos LowerVal 2 3))) ) ) ) (progn (cond ((= (atof (rtos UpperVal 2 1)) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos UpperVal 2 3))) ) ((= (atof (rtos LowerVal 2 1)) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos LowerVal 2 3))) ) (T (setq Thickness (strcat "THICKNESS=" (rtos UpperVal 2 3)))) ) ) ) (setq Test nil) (vlax-put-property obj 'TextString Thickness) (vlax-release-object obj) (vlax-release-object doc) ;;; ; Update Entity in drawing ;;; (setq EntityModify (subst (cons 1 Thickness) (assoc 1 (entget Ent)) (entget Ent))) ;;; (entmod EntityModify) (vla-save doc) (vla-close doc) ) ) ) ) ) -
vla-save vla-close ... sauvegarder l\'objet et dessin
Jipicad a répondu à un(e) sujet de Jipicad dans Pour aller plus loin en LISP
Voici mes autre fonctions : (defun ProNestTHK ( / TEXTSSet TEXTEntities Cpt Dxf Directory Thickness String->List PlasmaThk EntityModify UpperVal LowerVal) (setq TEXTSSet (ssget "X" '((0 . "TEXT") (8 . "Undertitle"))) Cpt 0 Directory "F:/Echange/Jean-Philippe/ProNest/Batch Process/Thickness.txt" PlasmaThk (readfile Directory) ) ; Create TEXT Entities List (repeat (sslength TEXTSSet) (setq TEXTEntities (append TEXTEntities (list (ssname TEXTSSet Cpt))) Cpt (+ Cpt 1) ) ) (mapcar '(lambda (Ent) (setq Dxf (cdr (assoc 1 (entget Ent)))) ; Retrieve Thickness attribute of the list (if (wcmatch Dxf "*THICKNESS*") (progn (setq Thickness (vl-string-left-trim "THICKNESS=" Dxf) String->List (vl-string->list Thickness) String->List (reverse (vl-remove-if '(lambda (Int) (or (= Int 76);|L|;(= Int 212);|Ô|;(= Int 112);|p|; (= Int 80);|P|;(= Int 101);|E|;(= Int 116);|t|; (= Int 70);|F|;(= Int 102);|f|;(= Int 108);|l|; (= Int 84);|T|;(= Int 108);|l|;(= Int 244);|ô|; ) ) String->List ) ) ) (repeat (length (vl-remove-if-not '(lambda (Numb) (= Numb 42)) String->List)) (setq String->List (cdr (member 42 String->List)))) (setq Thickness (vl-list->string (reverse String->List))) ; Modify Thickness of drawing for compatibility with PRONEST (setq PlasmaThk (vl-sort (append (list (atof Thickness)) (mapcar '(lambda (X) (atof X) ) PlasmaThk ) ) '(lambda (e1 e2) (< e1 e2)) ) UpperVal (nth (1+ (vl-position (atof Thickness) PlasmaThk)) PlasmaThk) LowerVal (nth (1- (vl-position (atof Thickness) PlasmaThk)) PlasmaThk) ) (if (> (atof Thickness) 4) (progn (cond ((= (RoundUp UpperVal) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos UpperVal 2 3))) ) ((= (RoundUp LowerVal) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos LowerVal 2 3))) ) ) ) (progn (cond ((= (atof (rtos UpperVal 2 1)) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos UpperVal 2 3))) ) ((= (atof (rtos LowerVal 2 1)) (atof Thickness)) (setq Thickness (strcat "THICKNESS=" (rtos LowerVal 2 3))) ) (T (setq Thickness (strcat "THICKNESS=" (rtos UpperVal 2 3)))) ) ) ) ; Update Entity in drawing (setq EntityModify (subst (cons 1 Thickness) (assoc 1 (entget Ent)) (entget Ent))) (entmod EntityModify) ) ) ) TEXTEntities ) ) ; Function readfile ; ; Parameter : FilePath -> a file directory ; ; Initial realese : 20-04-2011 Jean-Philippe Proulx ; ; Call sample : (readfile "F:/Echange/Jean-Philippe/ProNest/Batch Process/Thickness.txt") (defun readfile (FilePath / File Info ACTIVE) (setq File (open FilePath "r") ACTIVE T ) (while ACTIVE (setq ACTIVE (read-line File) Info (append (list ACTIVE) Info) ) ) (vl-remove nil Info) ) ; Function RoundUp ; ; Parameter : Real -> a real number ; ; Initial realese : 20-04-2011 Jean-Philippe Proulx ; ; Call sample : (RoundUp 4.36) (RoundUp 4.76) (defun RoundUp (Real / test) (if (= (max Real (+ (fix Real) 0.5)) Real) (setq test (+ (fix Real) 1)) (setq test (fix Real)) ) ) -
vla-save vla-close ... sauvegarder l\'objet et dessin
Jipicad a posté un sujet dans Pour aller plus loin en LISP
Bonjours J'explique ce que je veux faire: j'ouvre des dessins manuellement avec autocad ensuite je lance ma commande qui devrais changer un entité text dans mon dessin ensuite qui devrait passé a lautre dessin qui n'est pas actif encore, ainsi de suite (éventuellement le sauvegarder et le fermer) Voila comment je mis prend (je ne suis pas super familier avec les fonction vla, vlax ...) (vl-load-com) (defun BatchProcess ( / AcadObj ActiveDoc DocObj DocList DwgName DwgObj) (setq AcadObj (vlax-get-Acad-Object)) (setq ActiveDoc (vla-get-ActiveDocument AcadObj)) (setq DocObj (vla-get-Documents AcadObj)) (vlax-for doc DocObj (setq DocList (cons (cons (vla-get-Name doc) doc) DocLifst)) ) (foreach dwg DocList (setq DwgName (car dwg) DwgObj (cdr dwg) ) (if (not (equal ActiveDoc DwgObj)) (vla-activate DwgObj) ) (ProNestTHK) ;;; ma fonction qui modifie l'entité text ;;; (vla-save DwgObj) ;;; (vla-close DwgObj) ) ) le probleme est que je suis pas capable de tracé mon bug apres le (vla-activate DwgObj) le petit sablier apparait est j'ai beau vouloir avancer avec F8 je n'arrive pas a tracé mon bug j'ai fouiller un peux sur le forum je n'ai pas encore trouver la solution si quelqu'un a une idée Merci et bonne journée [Edité le 26/5/2011 par Jipicad] -
controle des touches acet-sys-keystate
Jipicad a répondu à un(e) sujet de Jipicad dans Pour aller plus loin en LISP
Je comprend pas se que t'essaie de faire ??????? -
Salut les Lispeurs Désolé si le sujet existe déjà j'ai fais des recherche mais pas trouver se que je cherche. Ce que je cherche ces une variable systeme qui me dirais si le dessin est impérial ou métrique le seul truc que j'ai trouver ses par rapport au dimstyle et au designcenter. Merci
-
controle des touches acet-sys-keystate
Jipicad a répondu à un(e) sujet de Jipicad dans Pour aller plus loin en LISP
Salut Krunch Chez moi (acet-sys-keystate 32) fonctionne je comprend pas bien ton problème j'ai créer une fonction keycontroler pour remédier a mon problème de base je suis sous vista et la fonction ne regarde plus si (=(acet-sys-keystate 32) -127) ou (=(acet-sys-keystate 32) 1) ou ... la fonction set au départ le statut des keys ensuite on fait nos comparaisons avec se statut. Je sais pas si ton problème correspond a se lui que j'avais fais moi signe si tu veux que je développe sur le sujet. a+ -
Bonjour a tous Voila mon probleme j'ai codé un jeux de pacman dans autocad et j'utilise pour le controle des touche la fonction acet-sys-keystate GetKeyState Win 32 quelqu'un connait ? Jusque la tout va bien je roulais mon pacman sous autocad 2007 sur un pc windows xp mais quand je suis venu pour transferer mon code sur mon portable autocad 2007 windows vista sa loop infini sur ma fonction de controle de touche et je crois que la cause et windows vista que le GetKeyState n'est pas pareil jai chercher sur internet mais rien trouver es-ce que quelqu'un a deja utilisé sous vista ??? merci (defun Pac_MainLoop_Exec (Game_Data / DoWhile Job_ToDo) (setq DoWhile T Job_ToDo 'DoNothing ) (while DoWhile (setq Job_ToDo (cond ((= -128 (acet-sys-keystate 37)) 'Pac_Move_Left) ; Arrow left ((= -128 (acet-sys-keystate 38)) 'Pac_Move_Up) ; Arrow Up ((= -128 (acet-sys-keystate 39)) 'Pac_Move_Right) ; Arrow right ((= -128 (acet-sys-keystate 40)) 'Pac_Move_Down) ; Arrow down ; to find required key inspect this and press key ; See the documentation for the GetKeyState Win32 function for additional details. ((= -128 acet-sys-keystate 88) ; x (setq DoWhile nil) 'DoNothing ) (t Job_ToDo) ; ensure to continue if no key press ) Game_Data (Apply Job_ToDo (list Game_Data)) ) (command "zoom" "e") ) )
-
Salut a tous Voila j'étais tanné de toujours créer un .dcl et un .lisp c'est maintenant du passé voici des fonctions de mon cru qui permet de tout faire en .lisp Retourne le chemin d'accès du fichier dcl (defun get_filename (ID / STRINGLEN POS STRLIST ID) (setq STRINGLEN (strlen " ") POS (vl-string-search " " (Vl-Princ-to-string ID)) STRLIST (append STRLIST (list (substr (Vl-Princ-to-string ID) 1 POS))) ID (substr (Vl-Princ-to-string ID) (+ (1+ STRINGLEN) POS) nil) ) (vl-string-right-trim ">" ID) ) Commence l'écriture du dcl dans une temp file (defun dcl_startdialog (NAME LABEL / ID) (setq ID (open (strcat (vl-filename-mktemp) ".dcl") "w")) (write-line (strcat NAME " : dialog {") ID) (write-line (strcat " label = \"" LABEL "\" ;") ID) ID ) Termine l'écriture du dcl et close la file (defun dcl_enddialog (ID / FILEDIRECT) (setq FILEDIRECT (get_filename ID)) (write-line "}" ID) (close ID) FILEDIRECT ) Écris du text dans le dcl (defun dcl_add_text (INDENT COMMENT ID KEY LABEL HEIGHT WIDTH FIXEDHEIGHT FIXEDWIDTH ALIGNMENT ISBOLD VALUE / INDENTSTRING ) (setq INDENTSTRING "") (repeat INDENT (setq INDENTSTRING (strcat INDENTSTRING " "))) (if COMMENT (write-line (strcat INDENTSTRING "//" COMMENT) ID)) (write-line (strcat INDENTSTRING ": text {") ID) (if KEY (write-line (strcat INDENTSTRING " " "key = " "\"" KEY "\"" " ;") ID)) (if LABEL (write-line (strcat INDENTSTRING " " "label = " "\"" LABEL "\"" " ;") ID)) (if HEIGHT (write-line (strcat INDENTSTRING " " "height = " (vl-Princ-to-string HEIGHT) " ;") ID)) (if WIDTH (write-line (strcat INDENTSTRING " " "width = " (vl-Princ-to-string WIDTH) " ;") ID)) (if FIXEDHEIGHT (write-line (strcat INDENTSTRING " " "fixed_height = " "true" " ;") ID)) (if FIXEDWIDTH (write-line (strcat INDENTSTRING " " "fixed_width = " "true" " ;") ID)) (if ALIGNMENT (write-line (strcat INDENTSTRING " " "alignment = " ALIGNMENT " ;") ID)) (if ISBOLD (write-line (strcat INDENTSTRING " " "is_bold = " "true" " ;") ID)) (if VALUE (write-line (strcat INDENTSTRING " " "value = " "\"" VALUE "\"" " ;") ID)) (write-line (strcat INDENTSTRING "}") ID) ) Ajoute un bouton dans le dcl (defun dcl_addbutton (INDENT COMMENT ID ACTION KEY LABEL HEIGHT WIDTH FIXEDHEIGHT FIXEDWIDTH ALIGNMENT ISENABLED ISTABSTOP MNEMONIC ISCANCEL ISDEFAULT / INDENTSTRING ) (setq INDENTSTRING "") (repeat INDENT (setq INDENTSTRING (strcat INDENTSTRING " "))) (if COMMENT (write-line (strcat INDENTSTRING "//" COMMENT) ID)) (write-line (strcat INDENTSTRING ": button {") ID) (if ACTION (write-line (strcat INDENTSTRING " " "action = " "\"" ACTION "\"" " ;") ID)) (if KEY (write-line (strcat INDENTSTRING " " "key = " "\"" KEY "\"" " ;") ID)) (if LABEL (write-line (strcat INDENTSTRING " " "label = " "\"" LABEL "\"" " ;") ID)) (if HEIGHT (write-line (strcat INDENTSTRING " " "height = " (vl-Princ-to-string HEIGHT) " ;") ID)) (if WIDTH (write-line (strcat INDENTSTRING " " "width = " (vl-Princ-to-string WIDTH) " ;") ID)) (if ALIGNMENT (write-line (strcat INDENTSTRING " " "alignment = " ALIGNMENT " ;") ID)) (if FIXEDHEIGHT (write-line (strcat INDENTSTRING " " "fixed_height = " "true" " ;") ID)) (if FIXEDWIDTH (write-line (strcat INDENTSTRING " " "fixed_width = " "true" " ;") ID)) (if ISENABLED (write-line (strcat INDENTSTRING " " "is_enabled = " "true" " ;") ID)) (if ISTABSTOP (write-line (strcat INDENTSTRING " " "is_tab_stop = " "true" " ;") ID)) (if MNEMONIC (write-line (strcat INDENTSTRING " " "mnemonic = " "\"" MNEMONIC "\"" " ;") ID)) (if ISCANCEL (write-line (strcat INDENTSTRING " " "is_cancel = " "true" " ;") ID)) (if ISDEFAULT (write-line (strcat INDENTSTRING " " "is_default = " "true" " ;") ID)) (write-line (strcat INDENTSTRING "}") ID) ) Et voici une petit fonction qui test le tout créer une simple boite de dialogue qui dit bonjour et avec un bouton ok quelque précision la variable indent sert a l'indentation du file dcl mais ce n'est pas nécessaire au bon fonctionnement de la fonction seulement pour raison de debug si on doit entrer dans le file dcl vaut mieux que l'indentation soit bien fait sa aide grandement a la compréhension du code donc sa fonction qui faut incrémenter la variable INDENT au debut de chaque call de fonction dcl_ et vis versa exemple (setq INDENT 1) (dcl_start_columm INDENT COMMENT ID) (setq INDENT (1+ INDENT)) .....code..... (setq INDENT (1- INDENT)) (dcl_close_columm INDENT COMMENT ID) (defun c:test ( / ID INDENT DCLFILE DCLID PROCEED) (setq ID (dcl_startdialog "Bonjour" "Test no. 1") INDENT 1 ) (dcl_add_text ;|Indentation|;INDENT ;|Comment|;nil ;|FileId|;ID ;|Key|;nil ;|Label|;nil ;|height|;nil ;|width|;nil ;|fixed_height|;nil ;|fixed_width|;nil ;|alignment|;nil ;|is_bold|;nil ;|value|;"Bonjour" ) (dcl_addbutton ;|Indentation|;INDENT ;|Comment|;nil ;|FileId|;ID ;|Action|;nil ;|Key|;"accept" ;|Label|;"OK" ;|height|;nil ;|width|;nil ;|fixed_height|;nil ;|fixed_width|;nil ;|alignment|;nil ;|is_enabled|;nil ;|is_tab_stop|;nil ;|mnemonic|;nil ;|is_cancel|;nil ;|is_default|;"true" ) (setq DCLFILE (dcl_enddialog ID) DCLID (load_dialog DCLFILE) ) (if (not (new_dialog "Bonjour" DCLID)) (exit) ) (setq PROCEED (start_dialog)) (unload_dialog DCLID) (vl-file-delete DCLFILE) ) possibilité d'ajouter des row, column, radio button, toggle button, boxed_row, boxed_column, ok_only ...... ENJOY
-
yo bah du lisp en gros c'est des liste est si tu fait des rectangles du genre tu te fais chier ensuite si tu veux modifier (defun c:rectanglelisp(/ p1 p2 ) (setq p1 (getpoint "\nSpécifiez le point bas gauche du rectangle sur l'écran :") (setq p2 (getpoint "\nSpécifiez le point haut droit du rectangle sur l'écran :") (command "rectangle" p1 p2) ) alors jte conseil de creer une fonction qui fait des ligne et une autre qui appel la fonction ligne 4 fois avec des point en parametre (defun line (BPOINT EPOINT LAYER / ) (entmake (list (cons 0 "Line") (cons 10 BPOINT) (cons 11 EPOINT) (cons 8 LAYER) ) ) (entlast) ) (defun recdraw (BPOINT L H LAYER / X Y PT1 PT2 PT4) (setq X (+ L (car BPOINT)) Y (+ H (cadr BPOINT)) PT1 (list X (cadr BPOINT) ) PT2 (list X Y ) PT3 (list (car BPOINT) Y ) ) (line BPOINT PT1 LAYER) (line PT1 PT2 LAYER) (line PT2 PT3 LAYER) (line PT3 BPOINT LAYER) ) pis dans un un grosse main fonction quand jai besoin de dessiner un rectangle ben jy call (recdraw '(0 0 0) 15 32 "0") ou mettons (setq pt (getpoint) longueur (getreal "\nentrer longueur:") hauteur (getreal "\nentrer longueur:") ) (recdraw pt longueur hauteur "0") voila tu peux regarder laide de vlide tres pratique bref ces sa jespere que sa peux taider
