-
Compteur de contenus
5 029 -
Inscription
-
Dernière visite
-
Jours gagnés
56
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par bonuscad
-
Bonjour, Une routine toute simple, mais qui pourra peut être vous rendre service. Elle vous permet de sélectionner un ou plusieurs objets, d'en effectuer une copie et de l'aligner suivant 2 points: c'est à dire sans changement d'échelle. Ceci d'une manière répétitive en donnant à chaque fois les 2 points de destination. Elle utilise l'ARX standard geom3d.arx (defun c:Mult_Align ( / pt_o1 pt_o2 pt_d1 pt_d2) (setvar "cmdecho" 0) (if (not (member "geom3d.arx" (arx))) (arxload "geom3d.arx")) (princ "\nChoisir les objets à aligner de façon multiple.") (cond ((ssget) (initget 9) (setq pt_o1 (getpoint "\n1er point origine: ")) (initget 9) (setq pt_o2 (getpoint "\n2ème point origine: ")) (initget 8) (while (setq pt_d1 (getpoint "\n1er point destination: ")) (command "_.copy" "_previous" "" "*0.0,0.0,0.0" "*0.0,0.0,0.0") (initget 9) (setq pt_d2 (getpoint "\n2ème point destination: ")) (command "_.align" "_previous" "" pt_o1 pt_d1 pt_o2 pt_d2 "" "_no") (setq pt_o2 (polar pt_d1 (angle pt_d1 pt_d2) (distance pt_o1 pt_o2)) pt_o1 pt_d1 ) (initget 8) ) ) (T (princ "\nSélection vide!")) ) (setvar "cmdecho" 1) (princ) )
-
Hé oui, il faut croire que c'est les ceintures noire les plus mal chaussés! :D Moi non plus je n'ai pas 2005. Je te suggère quand même d'essayer un chargement manuel (arxload "wipeout.arx") Sous la 2002 il m'arrive que malgré que les express soit installé et que le dessin contienne des masques que le wipeout ne soit pas chargé. D'ailleur depuis je l'ai rajouté dans le fichier AutoCAD.rx et plus problème!
-
Je confirme, J'enregistre mes icones en "nom parlant.bmp" dans mon dossier perso Puis j'édite mon PERSO.MNU et remplace les occurences ICONXXXX par mon "nom parlant.bmp" En effet les noms des icones sont automatiquement incrementés, et pour s'y retrouver 2 mois après bonjour :casstet:
-
Merci d'avoir répondu! Je vais continuer à faire le "devin" pour exploiter les fonctions activeX, car même en regardant l'aide VBA cela reste un jeu de devinettes pour transcrire en lisp. Déjà que j'ai du mal à m'y mettre... :casstet:
-
Est ce qu'on peut parler d'un bug ? Bien qu'utilisant pas le DesignCenter, je pense que l'import d'un dessin contenant des cotations, il est logique que le calque "Defpoint" soit importé car l'associativité de celle ci se fait à travers les points de définitions contenu dans ce calque un peu spécial, qui d'ailleurs n'est jamais imprimé. Donc à la limite il n'est pas génant qu'il soit présent...
-
Z sommet polyligne 3D=valeur d\'attribut sélectionné
bonuscad a répondu à un(e) sujet de Oli35 dans AutoCAD 2004
Sous cette forme alors (defun draw_pt (pt / pt1 pt2 pt3 pt4) (setq rap (/ (getvar "viewsize") 50) pt1 (list (+ (car pt) rap) (+ (cadr pt) rap)) pt2 (list (+ (car pt) rap) (- (cadr pt) rap)) pt3 (list (- (car pt) rap) (- (cadr pt) rap)) pt4 (list (- (car pt) rap) (+ (cadr pt) rap)) ) (grdraw pt pt1 -1) (grdraw pt pt2 -1) (grdraw pt pt3 -1) (grdraw pt pt4 -1) ) (defun ajouz ( / ent dxf_ent typ_ent z) (while (null ent) (setq ent (nentsel "\nChoisir le Texte/Texte Multiligne/Attribut pour obtenir le Z: ")) (cond ((not (null ent)) (setq typ_ent (cdr (assoc 0 (setq dxf_ent (entget (car ent)))))) (cond ((member typ_ent '("TEXT" "MTEXT" "ATTRIB")) (setq z (read (cdr (assoc 1 dxf_ent)))) (if (and (/= (type z) 'REAL) (/= (type z) 'INT)) (progn (princ "\nLa valeur du texte ne convient pas!") (initget 1 "Réessayer _Retry") (setq z (getreal "\n[Réessayer]/Entrez une valeur numérique: ")) (if (eq z "Retry") (setq ent nil)) ) ) ) (T (setq ent nil) (princ "\nN'est pas un Texte MTexte ou Attribut!") ) ) ) ) ) (princ (strcat "\nZ = " (rtos z 2 2))) z ) (defun c:modif-z_3dpol ( / ent l l1 x y) (while (null (setq ent (entsel "\nChoix de la 3Dpoly dont vous voulez changer le Z: ")))) (setq l (entget (car ent))) (cond ((and (= (cdr (assoc 0 l)) "POLYLINE") (eq (logand (cdr (assoc 70 l)) 8) 8)) (setq l1 (entget (entnext (cdr (assoc -1 l))))) (while (/= "SEQEND" (cdr (assoc 0 l1))) (setq x (cadr (assoc 10 l1))) (setq y (caddr (assoc 10 l1))) (draw_pt (trans (list x y) 0 1)) (entmod (subst (cons 10 (list x y (ajouz))) (assoc 10 l1) l1)) (draw_pt (trans (list x y) 0 1)) (setq l1 (entget (entnext (cdr (assoc -1 l1))))) ) (entupd (car ent)) ) (T (prompt "\nEntité choisie n'est pas une polyligne 3D.")) ) (prin1) ) NB:Evite les déplacements à l'écran pendant l'utilisation, tu comprendras vite pourquoi! -
Salut, Elle a du glissée en dehors de l'écran par un click prolongé :ca arrive ;) Si tu as la possibilité de monter encore la résolution de ton écran, tu pourras voir qu'elle a été déplacée. Autrement il faut simplement que tu désorganises tes barres d'outils des zones d'accrochage (bords d'écran) dans la zone graphique, et si necessaire les replacer (quand tu auras tout enlevé). Pendant ces manips un réagencement des barres aura lieu et au bout d'un momment tu verras ta barre perdue réapparaitre. D'ailleurs j'ai remarqué que malgré un recharchement de MNU original les positions des barres stipulé dans le menu comme par exemple: ID_TbOsnap [_Toolbar("Accrochage aux objets", _Floating, _Hide, 100, 210, 1)] n' a aucune incidence sur le placement de la barre, (cela doit rester dans la base de registre). En fait ces renseignements ne servent qu'au tout 1er chargement du menu :mad: Enfin je crois, c'est pour ca qu'il est difficile de les retrouver lorsqu'elles glissent dans une zone innaccessible.
-
J'ai les zygomatiques bien détendus :D
-
Entrée arbitraire et selection
bonuscad a répondu à un(e) sujet de Tramber dans Pour aller plus loin en LISP
Retourne à la discussion sur la 3Dpoly avec filtre de points XY et Z sur attribut Dans la boucle 3Dpoly j'arme les mots-clés avec (initget "Annuler U Clore") pour la fonction (getpoint). Personnellement je n'utilise même pas le bit 128 car la fonction (getpoint) honore bien les mots-clés (keyword) sans définir ce bit, ou alors je n'ai pas tout saisi non plus sur ce mode 128. -
Copier des objet et insertion entre 2 points
bonuscad a répondu à un(e) sujet de Oli553 dans Visual LISP
Et simplement une macro dans un bouton? Du style ^C^C_.select;\_.copy;_previous;;\_none;'_cal;(cur+cur)/2;^Z -
Bonjour, Je cherche toujours comment obtenir des informations en Vlisp pour utiliser ces fonctions activeX et la liste des fonctions disponibles, ici 'IntersectWhith Par exemple je sais que (vlax-invoke VLA-OBJECT 'IntersectWith VLA-OBJECT acExtend)) retourne une liste de réels des points d'intersections de 2 objets Mais j'ai mis du temps à trouver que acExtend pouvait prendre comme valeur 0 1 2 ou 3 correspondant au type de projection d'intersection désiré. Une recherche dans l'aide active m'oriente vers la syntaxe VBA mais rien en VLisp. C'est bête de ne pouvoir utiliser ces possibilités faute de documentation de base sur la syntaxe à utiliser. Quelqu'un sait-il où je pourrais pêcher de la doc? Merci
-
Z sommet polyligne 3D=valeur d\'attribut sélectionné
bonuscad a répondu à un(e) sujet de Oli35 dans AutoCAD 2004
Salut, Ou encore, en m'inspirant d'une routine que j'avais publié sur CadXp "line_xy.lsp", je l'ai juste complété pour obtenir ce qui suit: (defun ajouz ( / ent dxf_ent typ_ent z) (while (null ent) (setq ent (nentsel "\nChoisir le Texte/Texte Multiligne/Attribut pour obtenir le Z: ")) (cond ((not (null ent)) (setq typ_ent (cdr (assoc 0 (setq dxf_ent (entget (car ent)))))) (cond ((member typ_ent '("TEXT" "MTEXT" "ATTRIB")) (setq z (read (cdr (assoc 1 dxf_ent)))) (if (and (/= (type z) 'REAL) (/= (type z) 'INT)) (progn (setq ent nil) (princ "\nLa valeur du texte ne convient pas!")) ) ) (T (setq ent nil) (princ "\nN'est pas un Texte MTexte ou Attribut!") ) ) ) ) ) (princ (strcat "\nZ = " (rtos z 2 2))) z ) (defun err_plxy (ch) (cond ((eq ch "Function cancelled") nil) ((eq ch "quit / exit abort") nil) ((eq ch "console break") nil) (T (princ ch)) ) (if pt_b (command "")) (setq *error* olderr) (setvar "cmdecho" 1) (princ) ) (defun c:3dpoly_xy ( / odlerr msg_f msg_n n pt_f pt_n val_z) (setvar "cmdecho" 0) (setq olderr *error* *error* err_plxy) (setq msg_f "\nSpécifiez l'extrémité de la ligne .XY de, ou [annUler]: " msg_n "\nSpécifiez l'extrémité de la ligne .XY de, ou [Clore/annUler]: " n 0 ) (while (null (setq pt_f (getpoint "\nSpécifiez le point de départ de la polyligne: .XY de "))) (princ "\nPoint incorrect.") ) (setq val_z (ajouz)) (command "_.3dpoly" ".xy" pt_f val_z) (initget "U ANNUler _Undo UNDO") (while (and (setq pt_n (getpoint pt_f (if (< n 2) msg_f msg_n))) (/= pt_n "Close")) (if (listp pt_n) (progn (setq val_z (ajouz)) (command ".xy" pt_n val_z) (setq n (1+ n) pt_f pt_n) ) (if (zerop n) (princ "\nTous les segments sont déjà annulés.") (progn (command "_undo") (setq n (1- n) pt_f (getvar "lastpoint")) ) ) ) (if (< n 1) (initget "U ANNUler _Undo UNDO") (initget "U ANNUler Clore _Undo UNDO Close") ) ) (if (eq pt_n "Close") (command "_close") (command "") ) (setq *error* olderr) (setvar "cmdecho" 1) (princ) ) -
Doublons de points dans polylignes
bonuscad a répondu à un(e) sujet de Tramber dans Pour aller plus loin en LISP
Tramber, Je viens de retomber sur une routine que je m'etais écrite pour un besoin spécifique. Le but n'était pas le même, mais malgré tout elle peut répondre a ce besoin de doublon de sommet en donnant comme "inter-distance minimale à conserver" une distance très petite ex: 0.001 NB: je l'ai écrite pour un besoin très spécifique dans une situation bien précise (plan vectorisé), a utiliser AVEC PRECAUTION. Mais tu peux t'inspirer du code. (defun lxperr (ch) (cond ((eq ch "Function cancelled") nil) ((eq ch "quit / exit abort") nil) ((eq ch "console break") nil) (T (princ ch)) ) (setq *error* olderr) (princ) ) (defun c:lxpedit ( / olderr jspl nbr n tol ent_nam ent_sel ent_dxf vrtx1 vtrx2 a1 a2 ang lst_a tst_vrtx lst_pt nbs cnt nw count) (setvar "cmdecho" 0) (setq olderr *error* *error* lxperr) (setq jspl (ssget '((-4 . " (-4 . " (0 . "POLYLINE") (-4 . " (-4 . "&") (70 . 112) (-4 . "NOT>") (-4 . "AND>") (-4 . " (0 . "LWPOLYLINE") (-4 . "AND>") (-4 . "OR>")) ) nbr 0 n 0 ) (cond (jspl (initget 5) (setq tol (getdist "\nDonner l'inter-distance minimale a conserver: ") ) (if (zerop (getvar "WORLDUCS")) (command "_.ucs" "_save" "lxpedit")) (command "_.zoom" "_vmax") (prompt "\nRecherche des sommets concernés en cours ...\\") (repeat (sslength jspl) (setq ent_sel (ssname jspl nbr) ent_nam ent_sel) (setq ent_dxf (entget ent_nam)) (if (not (equal (assoc 210 ent_dxf) '(210 0.0 0.0 1.0))) (command "_.ucs" "_e" ent_nam) (command "_.ucs" "_w") ) (if (eq (cdr (assoc 0 (entget ent_nam))) "POLYLINE") (while (/= (cdr (assoc 0 (setq ent_dxf (entget (entnext ent_nam))))) "SEQEND") (cond ((or (/= (cdr (assoc 70 ent_dxf)) 1) (/= (cdr (assoc 70 ent_dxf)) 8)) (if vrtx1 (setq vrtx2 (cdr (assoc 10 ent_dxf)) lg (distance vrtx1 vrtx2) vrtx1 vrtx2 ) (setq vrtx1 (cdr (assoc 10 ent_dxf))) ) (if lg (setq lst_lg (cons lg lst_lg) tst_vrtx (reverse (mapcar '(lambda (x) (< x tol)) lst_lg)) ) ) ) ) (setq ent_nam (cdar ent_dxf)) (cond ((eq n 0) (prompt "\rRecherche des sommets concernés en cours ...|") ) ((eq n 1) (prompt "\rRecherche des sommets concernés en cours .../") ) ((eq n 2) (prompt "\rRecherche des sommets concernés en cours ...-") ) ((eq n 3) (prompt "\rRecherche des sommets concernés en cours ...\\") ) ) (setq n (rem (1+ n) 4)) ) ) (if (eq (cdr (assoc 0 (entget ent_nam))) "LWPOLYLINE") (progn (setq lst_pt (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) ent_dxf))) (while (> (length lst_pt) 1) (setq lg (distance (car lst_pt) (cadr lst_pt))) (if lg (setq lst_lg (cons lg lst_lg) tst_vrtx (reverse (mapcar '(lambda (x) (< x tol)) lst_lg)) ) ) (setq lst_pt (cdr lst_pt)) (cond ((eq n 0) (prompt "\rRecherche des sommets concernés en cours ...|") ) ((eq n 1) (prompt "\rRecherche des sommets concernés en cours .../") ) ((eq n 2) (prompt "\rRecherche des sommets concernés en cours ...-") ) ((eq n 3) (prompt "\rRecherche des sommets concernés en cours ...\\") ) ) (setq n (rem (1+ n) 4)) ) ) ) (cond (tst_vrtx (setq count 0) (command "_.pedit" ent_sel "_edit") (while (member T tst_vrtx) (if (nth count tst_vrtx) (progn (command "_straight") (command "_next") (while (nth count tst_vrtx) (command "_next") (setq nw (cdr (member T tst_vrtx))) (repeat (- (length tst_vrtx) (length (member T tst_vrtx))) (setq nw (cons nil nw)) ) (setq tst_vrtx nw) ) (command "_go" "_x" "_edit") (setq count 0) ) (progn (command "_next") (setq count (1+ count)) ) ) ) (command "_x" "_x") ) ) (setq nbr (1+ nbr) vrtx1 nil vtrx2 nil a1 nil a2 nil lst_a nil ang nil) ) (if (tblsearch "UCS" "LXPEDIT") (progn (command "_.ucs" "_restore" "lxpedit") (command "_.ucs" "_delete" "lxpedit") ) (command "_.ucs" "_world") ) (command "_.zoom" "_previous") (prompt (strcat "\n" (itoa (sslength jspl)) " entité(s) soumises à la commande. TERMINE !" ) ) ) (T (prompt "\nPas d'entités conformes sélectionnées..!")) ) (setq *error* olderr) (setvar "cmdecho" 1) (prin1) ) A corriger en mettant les bons symboles (setq jspl (ssget '((-4 . "infrieurOR") (-4 . "infrieurAND") (0 . "POLYLINE") (-4 . "infrieurNOT") (-4 . "&") (70 . 112) (-4 . "NOTsupérieur") (-4 . "ANDsupérieur") (-4 . "infrieurAND") (0 . "LWPOLYLINE") (-4 . "ANDsupérieur") (-4 . "ORsupérieur")) ) nbr 0 n 0 ) [Edité le 25/3/2005 par bonuscad][Edité le 25/3/2005 par bonuscad] [Edité le 25/3/2005 par bonuscad] -
Ludwig Voici un truc que j'utilise pour me faciliter les constitutions d'objet avec (entmake) dans mes routines. Si ça peut t'inspirer, tant mieux, ça rejoint ta demande. (defun c:dxf2file ( / oldim obj lst_pair grp_el typ_el ch1 ch2 ch msg ent fc f_open) (setq ent 0 oldim (getvar "dimzin")) (setvar "dimzin" 0) (while (not (listp ent)) (if user-dxf (setq msg "\nEntite/ - Choix de l'objet à lister ses codes DXF: ") (setq msg "\n/Sous-entite - Choix de l'objet à lister ses codes DXF: ") ) (initget "Entite Sous-entite") (if user-dxf (setq ent (nentsel msg)) (setq ent (entsel msg)) ) (if (eq ent "Sous-entite") (setq user-dxf T)) (if (eq ent "Entite") (setq user-dxf nil)) ) (cond (ent (setq obj (entget (car ent)) ch "") (while obj (setq lst_pair (car obj)) (setq grp_el (car lst_pair) typ_el (cdr lst_pair)) (cond ((eq (type grp_el) 'INT) (setq ch1 (itoa grp_el)) ) ((eq (type grp_el) 'REAL) (setq ch1 (rtos grp_el 2 4)) ) ((eq (type grp_el) 'STR) (setq ch1 grp_el) ) ((eq (type grp_el) 'ENAME) (setq ch1 "") ) (T (setq ch1 "") ) ) (cond ((eq (type typ_el) 'INT) (setq ch2 (itoa typ_el)) ) ((eq (type typ_el) 'REAL) (setq ch2 (rtos typ_el 2 4)) ) ((eq (type typ_el) 'STR) (setq ch2 typ_el) ) ((eq (type typ_el) 'ENAME) (setq ch2 "") ) ((eq (type typ_el) 'LIST) (setq ch2 (strcat (rtos (car typ_el) 2 4) " " (rtos (cadr typ_el) 2 4) (if (caddr typ_el) (strcat " " (rtos (caddr typ_el) 2 4)) ""))) ) (T (setq ch2 "") ) ) (if (eq (type typ_el) 'LIST) (setq ch (strcat ch "(" ch1 " " ch2 ")\n")) (setq ch (strcat ch "(" ch1 " . " ch2 ")\n")) ) (setq obj (cdr obj) ch1 "" ch2 "") ) (setq fc (getfiled "Fichier texte à créer" (getvar "dwgname") "txt" 1)) (setq f_open (open fc "w")) (write-line ch f_open) (close f_open) ) ) (setvar "dimzin" oldim) (prin1) )
-
Getfiled pour un dossier et non un fichier
bonuscad a répondu à un(e) sujet de LUDWIG dans Débuter en LISP
Ludwig, Voici un lisp que je me sert pour me créer une bibliothèque de dessin à partir d'un dessin contenant des blocs que je veux récupérer. Avec (getfiled) j'arrive bien à créer ou sélectionner un dossier ??? Je n'ai pas compris ton problème (defun record_dwg (name / nam_file) (cond ((not (wcmatch (cdr (assoc 2 name)) "`**")) (if (not prefix) (progn (setq nam_file (getfiled "Dessin bibliothèque" (cdr (assoc 2 name)) "dwg" 1)) (setq prefix (substr nam_file 1 (- (strlen nam_file) (strlen (cdr (assoc 2 name)))))) ) (setq nam_file (strcat prefix (cdr (assoc 2 name)))) ) (command "_.-wblock" nam_file (cdr (assoc 2 name))) ) ) ) (defun c:blk2dwg ( / first_blk l_blk n_blk prefix) (setq first_blk (tblnext "BLOCK" T)) (cond (first_blk (setq l_blk (list first_blk)) (while (setq n_blk (tblnext "BLOCK")) (setq l_blk (cons n_blk l_blk)) ) (setvar "FILEDIA" 0) (foreach n l_blk (record_dwg n)) (setvar "FILEDIA" 1) ) (T (princ "\nPas de blocs définis!") ) ) (prin1) ) -
Salut, Le mieux que j'ai pu faire sous une version pleine, mais je pense que ça fonctionnera sous une LT (pas testé) Un bouton defini comme suit devrait aller, il te faut être familier avec la commande "SELECTION RAPIDE" et la boite de "PROPRIETES", si tu sait les maitriser, cela devrait faire l'affaire. Peut être qu'un autre "scripteur" te proposera quelque chose de mieux. ^C^C$M=$(if,$(=,$(getvar,pickfirst),0),_.setvar;pickfirst;1;)_.qselect;_.copy;_none;*0,0,0;_none;*0,0,0;_.properties;_.pselect;_previous;;^Z
-
entget tant que la sélection n\'est pas valide
bonuscad a répondu à un(e) sujet de LUDWIG dans Débuter en LISP
C'est toujours simple quand on trouve ;) Un exemple presque identique, qui boucle donc tant que ce n'est pas un bloc avec facteur d'insertion à 1 et orientation à 0, mais aussi si tu RATE la sélection (sélection vide!) (defun c:select-insert ( / dxf_ent blk) (while (not (and (eq (cdr (assoc 0 dxf_ent)) "INSERT") (zerop (cdr (assoc 50 dxf_ent))) (eq (cdr (assoc 41 dxf_ent)) 1.0) (eq (cdr (assoc 42 dxf_ent)) 1.0) (eq (cdr (assoc 43 dxf_ent)) 1.0) ) ) (while (null (setq blk (entsel "\nChoisir un bloc: ")))) (setq dxf_ent (entget (car blk))) (if (not (and (eq (cdr (assoc 0 dxf_ent)) "INSERT") (zerop (cdr (assoc 50 dxf_ent))) (eq (cdr (assoc 41 dxf_ent)) 1.0) (eq (cdr (assoc 42 dxf_ent)) 1.0) (eq (cdr (assoc 43 dxf_ent)) 1.0) ) ) (alert "\nN'est pas un bloc, ou orientation et/ou échelle d'insertion ne conviennent pas!") ) ) (print dxf_ent) (prin1) ) -
C'est vrai pas de recommandations techniques, seule exigence a ne pas oublier, la possibilité d'accés des engins de secours. Donc en profil en long une pente supérieure à 7% déconseillée en zone de grand froid.
-
Code DXF de LONGUEUR et LARGEUR d\'une entité MUR
bonuscad a répondu à un(e) sujet de LUDWIG dans Débuter en LISP
Ludwig Pour identifier tes applications utilisées pour pouvoir faire ton (enget ename [listapp]), voici comment tu peux faire (setq dxf_app (tblnext "APPID" T)) (print (cdr (assoc 2 dxf_app))) (while (setq dxf_app (tblnext "APPID")) (print (cdr (assoc 2 dxf_app))) ) Tu auras ainsi la liste de tes applications enregistrée dans ton dessin. Après c'est une gestion des données étendues.....Il faut bien connaitre sa structure (pas évident) :casstet: -
Salut Pourquoi ne pas simplement introduire ton CD 2005, abandonner la procédure d'installation si Autorun est actif. Puis à l'aide de ton explorateur tu parcours ton CD à la recherche de ton AutoCAD.MNU. Bien sur celui-ci peut se trouver dans un fichier .CAB (acad1.cab?), mais avec winzip ou autre tu peut ouvrir ce fichier CABinet et extraire celui que tu veux récupérer. Ne peut vérifier avec 2005, cas je ne l'a possède pas! Bonne chance [Edité le 16/3/2005 par bonuscad]
-
comment faire une sous fenêtre dans ma présentation ?
bonuscad a répondu à un(e) sujet de tostaky dans Débuter en LISP
Salut Une solution possible parmis tant d'autre: (defun c:test ( / ) ;;Se mettre obligatoirement dans un onglet présentation (setvar "tilemode" 0) ;;Etre sur d'être dans l'espace papier (command "_.pspace") ;;Efface les fenêtres déjà faites si elles existent (if (ssget "X" '((0 . "VIEWPORT"))) (command "_.erase" "_previous" "") ) ;;Défini un A0 coin bas gauche (cbg) et coin haut droit (chd) (setq cbg '(0.0 0.0) chd '(1188.0 840.0) ) ;;Calcule un coin bas gauche bis pour la petite fenêtre (cbgb) 1/4 des cotés (setq cbgb (list (+ (* (/ (- (car chd) (car cbg)) 4.0) 3.0) (car cbg)) (+ (* (/ (- (cadr chd) (cadr cbg)) 4.0) 3.0) (cadr cbg)) ) ) ;;Crée un fenêtre POLYGONALE qui va détourer la petite fenêtre (command "_.mview" "_polygonal" cbg (list (car chd) (cadr cbg)) (list (car chd) (cadr cbgb)) cbgb (list (car cbgb) (cadr chd)) (list (car cbg) (cadr chd)) "_close" ) ;;Crée la petite fenêtre (command "_.mview" cbgb chd) ;;Zoom sur le format A0 (command "_.zoom" "_window" cbg chd) (prin1) ) -
Davizero Une raison pour que ton Nord bouge est que ton fond de plan géomètre aurait été conçu sur un SCU utilisateur. Si c'est le cas, il te suffit de remplacer l'option "g" (_world) par "p" (_previous) pour retourner à ton SCU précedent et non général. J'espère que ce fond de plan n'est pas calé en système LAMBERT, car alors qu'elle misère. Je donnerais pas de nom, mais j'ai déjà vu des géomètre livrer de tel plan. Cette méthode est beaucoup trop risqué car la définition de ce SCU (Utilisateur) peu être perdu a n'importe quel moment :purge de fichier, wbloc ...., et alors les surprises très désagréables, surtout si aucun carroyage n'a été fait pour se repèrer et recaler le fichier.(mais ouf! généralement celui-ci existe) NB:Mon post, malgré une édition de ma part, comporte toujours un espace non voulu dans "_current" ???? :o
-
Je ferais la même proposition que Ph.V Personellement c'est un bouton que j'utilise assez. Attention à la varieble "ucsfollow" qui peut changer le comportement, le bouton est pratiquement identique au précédent: ^C^C^P$M=$(if,$(!=,$(getvar,cvport),2),_.mspace;)_.ucs;_3point;\\\_.plan;_current;_.ucs;_world;^Z [Edité le 8/3/2005 par bonuscad]
-
Toujours dans le même genre: 3 chauffeurs routier mange au restaurant, le prix à régler pour tous les 3 et de 25 euros Ils décident donc de donner 10 euros chacun ce qui fait 30 euros. La serveuse leur rend 5 euros, mais de pouvant partager facilement ces 5 euros, ils décident de laisser 2 euros de pouboire a celle-ci et récuperent donc 1 euros chacun. Donc au final ils ont donné 9 euros chacun (10 - 1 qu'ils ont récupéré). Cela fait donc: 3 X 9 = 27 euros + les 2 euros donné à la serveuse = 29 euros QUESTION : Où est passé le 1 euro manquant ? Je vous rassure c'est pas dans ma poche? ;)
-
La dernière réponse de Didier doit être la bonne! Voir aussi la variable PLINEGEN dans l'aide. Celle-ci je pense t'évitera de définir le mode typelign pour chaque polyligne, qui serait fastidieu :cool:
