Aller au contenu

zebulon_

Membres
  • Compteur de contenus

    1 489
  • Inscription

  • Dernière visite

  • Jours gagnés

    19

Tout ce qui a été posté par zebulon_

  1. zebulon_

    Chargement menu ?

    Bonjour, Ah les problèmes de traduction... A l'avenir, je veillerai à utiliser aussi les termes français. A la place de "zappé", je te propose "occulté" ou "passé outre", c'est plus Académique. Amicalement Zebulon_
  2. zebulon_

    entsel hachures

    Bonjour, Sur la boîte de dialogue, il y a trois zones. La première : - Type (de faux plafond) : en fonction du choix (gyptone ou dune), le lisp mettra la hachure et le contour sur un calque spécifique La deuxième : - Contour : -> choix contour : permet de sélectionner une polyligne existante pour y coller la hachure de faux plafond -> Créer avec Bpoly : permet de cliquer une point dans une zone fermée pour créer un contour grâce à la commande _bpoly (ou fpoly) -> Créer avec points : permet de lancer la commande _pline pour définir un contour point par point La troisième : - Origine SCU -> Automatique : les dalles de 0.60x0.60 seront centrées par rapport au contour -> Angle dalle : on peut cliquer un point par lequel passera les hachures de 0.60x0.60 -> Centre dalle : on peut cliquer un point qui sera le centre d'une dalle de 0.60x0.60 et on aura donc un décalage de 0.30x0.30 par rapport à ce point. (Pratique quand on a des couloirs, ou deux couloirs qui se croisent) Voilà... Après, pour placer les luminaires, qui sont des blocs, j'utilise la commande reseau. Puis je place d'autres blocs au droit des portes pour matérialiser les interrupteurs VV et SA et BP. Puis je lance un autre lisp qui met des petits arcs entre les interrupteurs et chaque loupiotte sélectionnée, pour matérialiser le réseau électrique (quel interrupteur avec quel spot etc...) Mais ça c'est une autre histoire... Amicalement Zebulon_
  3. Bonjour, Dernièrement, j'avais une série de feuilles A4 dessinées sur mon espace objet, dessinées l'une à côté de l'autre dans le sens des X avec une décalage de 24500.00. Je devais les mettre en page, chacune séparément, dans l'espace objet. Chaque feuille son onglet. J'ai mis en page la première feuille A4 sur un onglet et à partir de là j'ai lancé le lisp suivant (defun llayouts (/ acadobject ActDoc LAYOUTS LLAY n) (setq acadObject (vlax-get-acad-object)) (setq ActDoc (vla-get-ActiveDocument (vlax-get-Acad-Object))) (setq LAYOUTS (vla-get-Layouts ActDoc)) (setq LLAY nil) (vlax-for n LAYOUTS (setq LLAY (cons (vla-get-name n) LLAY)) ) LLAY ) (defun NewNameLayout (OLDLAY NEWLAY) (setq RES nil) (while NEWLAY (setq ELEM (car NEWLAY)) (setq NEWLAY (cdr NEWLAY)) (if (not (member ELEM OLDLAY)) (setq RES ELEM) ) ) RES ) (defun c:clayout () (vl-load-com) (setq NBPAGE (getint "\nNombre de copies : ")) (repeat NBPAGE (setq OLDLLAY (llayouts)) (command "_layout" "_c" "" "") (setq NEWLLAY (llayouts)) (setq NNAME (NewNameLayout OLDLLAY NEWLLAY)) (command "_layout" "_s" NNAME) (command "_MSPACE") (command "_-pan" "_non" '(0 0) "_non" '(-24500.0 0)) (command "_PSPACE") ) (princ) ) Bien entendu, la fonction (llayouts) peut être remplacée par (layoutlist) comme le suggère Patrick. C'est juste pour vous montrer que je fais des progrès en vlisp. Amicalement Zebulon_ [Edité le 12/9/2006 par zebulon_]
  4. zebulon_

    Chargement menu ?

    Bonjour, http://www.cadxp.com/sujetXForum-7370.htm traite du même sujet mais avec des menu .mns, qui sont chargés via vlisp. Mais je pense qu'avec les .cui, ça doit marcher pareil. Amicalement Zebulon_
  5. zebulon_

    entsel hachures

    Ami électricien bonjour, à la place de je préfère utiliser les antiques hachures "définies par l'utilisateur" en prenant une distance de 0.60 et en cochant l'option "double". du genre... (command "-fhach" "P" "_u" "0" "0.60" "o" "A" "A" "o" "" "S" e "" "") Sinon, j'ai fait quelque chose de similaire pour le même usage. le fichier Fxplaf.dcl dcl_settings : default_dcl_settings { audit_level = 0 ;} Fxplaf : dialog { label = "Faux Plafond"; initial_focus = "fx_choix"; : row { : column { : boxed_radio_column { label = "Type : "; key = "fx_typ"; : radio_button { label = "Gyptone"; key = "fx_typ1"; } : radio_button { label = "Dune"; key = "fx_typ2"; } } : boxed_column { fixed_height = true; label = "Contour"; : button { label = "Choix contour <"; key = "fx_choix"; } : button { label = "Créer avec bpoly <"; key = "fx_bpoly"; } : button { label = "Créer avec points <"; key = "fx_poly"; } } } : column { : boxed_column { label = "Origine SCU"; : button { label = "Automatique <"; key = "fx_auto"; } : button { label = "Angle dalle <"; key = "fx_angle"; } : button { label = "Centre dalle <"; key = "fx_centre"; } : text { key = "fx_methode"; } : text { key = "fx_xscg"; } : text { key = "fx_yscg"; } } } } spacer_1; ok_cancel; } Le fichier Fxplaf.lsp ;;; ;;; créer un calque (defun calque (NewLayer ColLayer TlLayer) (if (not (tblsearch "LTYPE" TlLayer)) (command "typeligne" "CH" TlLayer "acadiso" "") ) (if (not (tblsearch "LAYER" NewLayer)) (command "_layer" "_M" NewLayer "_CO" ColLayer "" "_LT" TlLayer "" "") (command "_LAYER" "L" NewLayer "AC" NewLayer "_S" NewLayer "") ) ) ;;; ;;; lancer une commande autocad (defun mycmd (LCMD / CMD ETL LELEM RES OLDCMDECHO) (setq ETL (entlast)) (setq OLDCMDECHO (getvar "CMDECHO")) (setvar "CMDECHO" 1) (foreach CMD LCMD (command CMD) ) (while (not (zerop (getvar "cmdactive"))) (command pause) ) (setvar "CMDECHO" OLDCMDECHO) (setq LELEM nil) (if (not ETL) (setq ETL (entnext)) (setq ETL (entnext ETL)) ) (while ETL (setq LELEM (cons ETL LELEM)) (setq ETL (entnext ETL)) ) (setq RES LELEM) ) (defun text_fx_methode (fx_methode) (cond ((= FX_METHODE 0) "Méthode : Non définie") ((= FX_METHODE 1) "Méthode : Automatique") ((= FX_METHODE 2) "Méthode : Angle") ((= FX_METHODE 3) "Méthode : Centre") ) ) (defun test_poly_fermee (e / a TYPent TYPlw RES) (if e (progn (setq a (entget e)) (setq TYPent (cdr (assoc 0 a))) (redraw e 3) (princ) (if (= TYPent "LWPOLYLINE") (progn (setq TYPlw (cdr (assoc 70 a))) (if (= TYPlw 0) (progn (alert "La polyligne n'est pas fermée !\nElle le sera") (command "_pedit" e "_c" "") (redraw e 3) (princ) ) ) ) (progn ; sinon (alert "Ce n'est pas une polyligne !") (redraw e 4) (princ) (setq e nil) ) ) ) ) (setq RES e) ) (defun do_accept_fxplaf () (if e (done_dialog 2) (alert "Aucune polyligne sélectionnée !!!") ) ) (defun do_fx_auto () (if E (progn (setq A (entget E)) (setq LL (length A)) (setq LSOM nil) (repeat LL (setq ELEM (car A)) (setq A (cdr A)) (if (= (car ELEM) 10) (setq LSOM (append LSOM (list (trans (cdr ELEM) 0 1)))) ) ) (setq XMIN (car (car LSOM))) (setq YMIN (cadr (car LSOM))) (setq XMAX XMIN) (setq YMAX YMIN) (foreach SOM LSOM (if (< (car SOM) XMIN) (setq XMIN (car SOM)) ) (if (> (car SOM) XMAX) (setq XMAX (car SOM)) ) (if (< (cadr SOM) YMIN) (setq YMIN (cadr SOM)) ) (if (> (cadr SOM) YMAX) (setq YMAX (cadr SOM)) ) ) (setq DELTAX (- XMAX XMIN)) (setq NBPAS (fix (/ DELTAX 0.60))) (setq RABX (/ (- DELTAX (* NBPAS 0.60)) 2)) (if (and (not (zerop RABX)) (< RABX 0.10)) (setq RABX (/ (- DELTAX (* (- NBPAS 1) 0.60)) 2)) ) (setq DELTAY (- YMAX YMIN)) (setq NBPAS (fix (/ DELTAY 0.60))) (setq RABY (/ (- DELTAY (* NBPAS 0.60)) 2)) (if (and (not (zerop RABY)) (< RABY 0.10)) (setq RABY (/ (- DELTAY (* (- NBPAS 1) 0.60)) 2)) ) (setq OSCU (list (+ XMIN RABX) (+ YMIN RABY))) (setq FX_METHODE 1) (setq FX_XSCG (strcat "Xscg = " (rtos (car (trans OSCU 1 0)) 2 3))) (setq FX_YSCG (strcat "Yscg = " (rtos (cadr (trans OSCU 1 0)) 2 3))) (set_tile "fx_methode" (text_fx_methode FX_METHODE)) (set_tile "fx_xscg" FX_XSCG) (set_tile "fx_yscg" FX_YSCG) ) ) ) (defun main_fxplaf () (setq e nil) (if (not FX_TYP) (setq FX_TYP "fx_typ1")) (setq FX_METHODE 0) (setq FX_XSCG "Xscg = ") (setq FX_YSCG "Yscg = ") (setq OSCU '(0 0)) ;ouverture de la boîte de dialogue (setq What_next 5) (setq dcl_id (load_dialog "fxplaf.dcl")) (While (> What_next 2) (if (not (new_dialog "Fxplaf" dcl_id)) (exit)) (set_tile "fx_typ" FX_TYP) (set_tile "fx_methode" (text_fx_methode FX_METHODE)) (set_tile "fx_xscg" FX_XSCG) (set_tile "fx_yscg" FX_YSCG) (if e (mode_tile "fx_auto" 0) (mode_tile "fx_auto" 1) ) (action_tile "fx_typ" "(setq FX_TYP $value)") (action_tile "fx_auto" "(do_fx_auto)") (action_tile "fx_poly" "(done_dialog 7)") (action_tile "fx_centre" "(done_dialog 6)") (action_tile "fx_angle" "(done_dialog 5)") (action_tile "fx_bpoly" "(done_dialog 4)") (action_tile "fx_choix" "(done_dialog 3)") (action_tile "accept" "(do_accept_fxplaf)") (action_tile "cancel" "(done_dialog 0)") (setq What_next (start_dialog)) (if (= What_next 5) ;;; fx_angle (progn (setq PTEMP (getpoint "\nAngle de dalle : ")) (if PTEMP (progn (setq OSCU PTEMP) (setq FX_METHODE 2) (setq FX_XSCG (strcat "Xscg = " (rtos (car (trans OSCU 1 0)) 2 3))) (setq FX_YSCG (strcat "Yscg = " (rtos (cadr (trans OSCU 1 0)) 2 3))) ) ) ) ) (if (= What_next 6) ;;; fx_centre (progn (setq PTEMP (getpoint "\nCentre de dalle : ")) (if PTEMP (progn (setq OSCU (list (+ (car PTEMP) 0.30) (+ (cadr PTEMP) 0.30))) (setq FX_METHODE 3) (setq FX_XSCG (strcat "Xscg = " (rtos (car (trans OSCU 1 0)) 2 3))) (setq FX_YSCG (strcat "Yscg = " (rtos (cadr (trans OSCU 1 0)) 2 3))) ) ) ) ) (if (= What_next 7) ;;; fx_poly (progn (if e (redraw e 4)) (calque "0" "7" "continuous") (setq LELEM (mycmd '("_.pline"))) (if LELEM (progn (setq e (car LELEM)) (test_poly_fermee e) (if (or (= FX_METHODE 0) (= FX_METHODE 1)) (do_fx_auto) ) ) ) ) ) (if (= What_next 3) ;;; fx_choix (progn (setq eTEMP (car (entsel "\Sélectionner un polyligne fermée : "))) (if (test_poly_fermee eTEMP) (progn (if e (progn (redraw e 4) (princ) ) ) (setq e eTEMP) (if (or (= FX_METHODE 0) (= FX_METHODE 1)) (do_fx_auto) ) ) ) ) ) (if (= What_next 4) ;;; bpoly (progn (setq PTemp (getpoint "\nPoint intérieur : ")) (calque "0" "7" "continuous") (setq eTEMP (bpoly PTemp)) (if (not eTEMP) (alert "Point hors du contours !") (progn (if e (redraw e 4)) (setq e eTEMP) (redraw e 3) (princ) (if (or (= FX_METHODE 0) (= FX_METHODE 1)) (do_fx_auto) ) ) ) ) ) ) ; fin du while (unload_dialog dcl_id) (if (= What_next 2) (progn (setq OLDOS (getvar "OSMODE")) (setvar "OSMODE" 0) (command "_ucs" "_o" OSCU) (if (= FX_TYP "fx_typ1") (calque "Fau$gyptone_vu" "10" "continuous") (calque "Fau$dune_vu" "70" "continuous") ) (command "-fhach" "P" "_u" "0" "0.60" "o" "A" "A" "o" "" "S" e "" "") (if (= FX_TYP "fx_typ1") (calque "Fau$zonegyptone_ha" "9" "continuous") (calque "Fau$zonedune_ha" "9" "continuous") ) (command "_.change" e "" "_properties" "_layer" (getvar "CLAYER") "") (command "_ucs" "_o" (trans PTORI 0 1)) (setvar "OSMODE" OLDOS) ) ; fin du alors ) (if e (redraw e 4) ; enlever la surbrillance ) ) (defun C:fxplaf () (setq OLD_ATT (getvar "attdia")) (setvar "attdia" 0) (setq OLD_CMD (getvar "cmdecho")) (setvar "cmdecho" 0) (setq CLAY (getvar "CLAYER")) (setvar "MEASUREMENT" 1) (setq PTORI (trans '(0 0) 1 0)) (main_fxplaf) (setvar "CLAYER" CLAY) (setvar "cmdecho" OLD_CMD) (setvar "attdia" OLD_ATT) (princ) ) si ça peut t'inspirer... Amicalement Zebulon_
  6. Bonjour, Pour éviter ce genre de problèmes, je mets les blocs que je veux insérer avec un lisp par (command "_insert"...) dans un répertoire référencé dans les chemins de recherche de fichier de support (outils / options), comme ça je n'ai pas besoin d'indiquer de chemin dans la commande _insert mais seulement le nom. Alors, soit le bloc n'est pas défini et autocad va le piocher dans le répertoire de fichier de support ,soit le bloc est déjà défini et autocad va le piocher dans la table de blocs du fichier. Ce qui est intéressant, c'est que les 2 opérations se font avec la même ligne de commande du genre : (command "_INSERT" NOMBLOC pick_pt "1" "1" "0") Amicalement Zebulon_ [Edité le 31/8/2006 par zebulon_]
  7. Bonjour, En essayant de trouver les traductions en "international" de certaines options de la commande -calque (ou _-layer), je me suis apperçu d'un petit détail intéressant : on peut geler, désactiver, vérrouiller et déverrouiller en désignant des objets. ex : et là vous appuyez sur entrée et vous désignez des objets dont les calques sont à geler, vous validez la sélection puis vous validez encore une fois pour quitter la commande. Et hop, les calques sont gelés. Un synonyme de "layfrz" des express tools en quelque sorte. Je voulais essayer un truc de ce style (defun c:frz () (setq ss (ssget)) (command "_layer" "_f" "" ss "" "") (princ) ) ça ne marche pas comme j'espérai... Mais c'est pas grave... Amicalement Zebulon_
  8. Bonjour, ça fait longtemps... Bon, c'est pas le sujet. Donc, la commande REVCLOUD revue pour qu'elle corresponde à ce que je fais toujours : -> des arcs de 3 unités de long -> avec un petit texte à côté qui indique l'indice -> le petit texte encadré avec un polygone de trois côtés. Je fais toujours mes nuages de révision sur l'espace papier, comme ça je ne m'embête pas avec les échelles. (defun c:nuage (/ OLDCLAYER OLDWID OLDORTHO LAYTXNAME STYTXNAME PT1 PT2 PT3 PT4) (setvar "cmdecho" 0) (command "_.undo" "_group") (setq OLDCLAYER (getvar "clayer")) (setq OLDWID (getvar "plinewid")) (setvar "plinewid" 0) ;; enlever le mode ortho, c'est plus joli (setq oldORTHO (getvar "ORTHOMODE")) (setvar "ORTHOMODE" 0) ;; créer un style de texte de 3 de haut (setq LayTxName "txt30-1000") (setq StyTxName "txt30-1000") (if (not (tblsearch "LAYER" LayTxName)) (command "_layer" "_M" LayTxName "") (command "_layer" "_t" LayTxName "_on" LayTxName "_S" LayTxName "") ) (if (not (tblsearch "STYLE" StyTxName)) (command "style" StyTxName "arial.ttf" "3" "1.00" "0.00" "N" "N") (command "_textstyle" StyTxName) ) ;; initialiser la variable NUAGE_INDICE (if (not NUAGE_INDICE) (setq NUAGE_INDICE "A")) (prompt (strcat "Indice de révision : " NUAGE_INDICE)) (setq PT1 nil) (while (/= (type PT1) 'LIST) (initget 1 "Indice") (setq PT1 (getpoint "\nPremier point ou [indice] ")) (cond ((= PT1 "Indice") (setq NUAGE_INDICE (getstring "\nIndice : ")) ) ) ) ;; lancer la commande NUAGEREV (command "_revcloud" "_a" "3" "3" "_non" PT1) (while (not (zerop (getvar "cmdactive"))) (command pause) ) ;; placer le texte de l'indice (setq PT2 (getpoint "\nPoint d'insertion du texte")) (command "_text" "_mc" "_non" PT2 "0" NUAGE_INDICE) (setq PT3 (list (- (car PT2) 3.5) (- (cadr PT2) 2.0))) (setq PT4 (list (+ (car PT2) 3.5) (- (cadr PT2) 2.0))) (command "_polygon" "3" "_e" "_non" PT3 "_non" PT4) (setvar "PLINEWID" OLDWID) (setvar "ORTHOMODE" oldORTHO) (setvar "CLAYER" OLDCLAYER) (command "_.undo" "_end") (princ) ) La subtilité de ce lisp était de pouvoir coller un "pause" dans la commande REVCLOUD, ce que j'ai fait avec (while (not (zerop (getvar "cmdactive"))) (command pause) ) On avait déjà utilisé ce subterfuge pour saisir des polylignes avec n points à l'intérieur d'un lisp ici http://www.cadxp.com/sujetXForum-4847.htm Amicalement Zebulon_
  9. zebulon_

    1434.3m à battre...

    je ne passe pas les 1000...
  10. Bonjour, un bout de code qui permet de dessiner une polyligne, de créer une autre polyligne à partir de la première en faisant un simple décaler et de fermer ce deux polylignes par deux lignes (defun LwEdge (e) (setq LSOM nil) (setq COUNT 0) (setq NBELEM (length e)) (repeat NBELEM (setq ELEM (nth COUNT e)) (if (= (car ELEM) 10) (setq LSOM (append LSOM (list (cdr ELEM)))) ) (setq COUNT (+ COUNT 1)) ) (setq TEMP LSOM) ) ;;; ;;; lancer une commande autocad (defun mycmd (LCMD / CMD ETL LELEM RES OLDCMDECHO) (setq ETL (entlast)) (setq OLDCMDECHO (getvar "CMDECHO")) (setvar "CMDECHO" 1) (foreach CMD LCMD (command CMD) ) (while (not (zerop (getvar "cmdactive"))) (command pause) ) (setvar "CMDECHO" OLDCMDECHO) (setq LELEM nil) (if (not ETL) (setq ETL (entnext)) (setq ETL (entnext ETL)) ) (while ETL (setq LELEM (cons ETL LELEM)) (setq ETL (entnext ETL)) ) (setq RES LELEM) ) (defun c:batiouvert () (setq P (mycmd '("_.pline"))) (if P (progn (setq P (car P)) (setq D (getdist "\nDistance de décalage :")) (setq C (getpoint "\nCôté :")) (command "_.offset" D P C "") (setq L (entlast)) (setq LSOM1 (LwEdge (entget P))) (setq LSOM2 (LwEdge (entget L))) (setq P3 (trans (car LSOM1) 0 1)) (setq P4 (trans (car LSOM2) 0 1)) (setq P5 (trans (car (reverse LSOM1)) 0 1)) (setq P6 (trans (car (reverse LSOM2)) 0 1)) (command "_LINE" P3 P4 "") (setq e3 (entlast)) (command "_LINE" P5 P6 "") (setq e4 (entlast)) ) ) (princ) ) amicalement zebulon_
  11. En fait, ça ne marche que pour des vues sans scu associé. D'ailleurs l'auteur semble l'indiquer mias je suis trop nul en anglais pour l'affirmer. Amicalement Zebulon_
  12. Bonjour, il y a déjà un problème avec la fonction open qui se trouve dans importviews : elle renvoie toujours nil. parce que fn ne contient que le nom du fichier et pas son chemin. Il faudra sans doute changer : et mettre 16 à la place du 8 pour avoir tout le chemin. Mais ça plante encore plus loin ... Amicalement Zebulon_
  13. zebulon_

    nouveau defi

    Traber était plus rapide... (defun C:XX () (setvar "cmdecho" 0) (command "_.undo" "_group") (setq Rayon (getdist "\nRayon des cylindres?")) (setq ss (ssget '(( 0 . "LINE")))) (if ss (progn (setq SSL (sslength SS)) (setq I 0) (while (< I SSL) (setq E (ssname SS I)) (setq A (entget E)) (setq I (+ I 1)) (setq Dep (cdr (assoc 10 A))); list coordonne depart (setq Fin (cdr (assoc 11 A))); list coordonne fin (command "_cylinder" Dep Rayon "_C" Fin) ) ) ) (command "_.undo" "_end") (princ) )
  14. Bonjour, je vous suggère l'utilisation de la commande (getangle) au lieu de (angle). Getangle, associé avec angtos, ça marche assez bien. (command "texte" (setq lp (getpoint)) (getdist lp) (angtos (getangle lp)) "texte") ça marche à tous les coups, sauf quand on a changer l'orientation de l'angle 0 (à l'est par défaut, qu'on aurait mis au nord) ou le sens de rotation des angles (mathématique ou horaire) Amicalement Zebulon_
  15. zebulon_

    Supprimer attributs

    Bonjour, essaye ça... Amicalement Zebulon_
  16. zebulon_

    Une ptite soif!!

    Euhh, le frigo belge, il me semble. Nous les alsaciens, on n'est pas assez intelligent pour inventer un truc aussi complexe... D'ailleurs, c'est de la Buckler qu'on croit deviner. Une bière blonde sans alcool Hollandaise brassée chez Heineken... à Schiltigheim en Alsace. Une tireuse de bière, directement dans la porte de son réfrigérateur, fallait y penser. Bien entendu, l'abus de bière est dangereux pour la santé. A consommer avec modération. Même quand c'est sans alcool. Amicalement Zebulon_
  17. (setvar "DIMZIN" 0) ; pour que le rtos ne sucre pas les zero à rajouter tout au début et (setq RESULT (rtos(/(vla-get-Area(vlax-ename->vla-object ent1))10000.0)2 2)) à remplacer par (setq RESULT (strcat (rtos(/(vla-get-Area(vlax-ename->vla-object ent1))10000.0)2 2) " m2")) Amicalement Zebulon_
  18. Donc le bloc SURFPIEC est déjà inséré dans le fichier et il faut éditer son attribut "000" pour y coller le résultat du calcul ? (defun c:stot ( / ) (setq *delobj*(getvar "DELOBJ")) (setvar "DELOBJ" 0) (prompt "\nChoisir les polylignes ....") (setq gr (ssget '((0 . "LWPOLYLINE"))) ) (setq tot 0 cont 0) (setq ent1(vlax-ename->vla-object(ssname gr cont))) (if(=(vla-get-closed ent1):vlax-true) (progn (command "_region" (ssname gr cont)"") (setq ent1(entlast)) (if(=(vla-get-ObjectName(vlax-ename->vla-object(entlast)))"AcDbRegion") (progn (repeat(1- (sslength gr)) (setq cont (+ 1 cont)) (setq ent2(vlax-ename->vla-object(ssname gr cont))) (if(=(vla-get-closed ent2):vlax-true) (progn (command "_region" (ssname gr cont)"") (if(=(vla-get-ObjectName(vlax-ename->vla-object(entlast)))"AcDbRegion") (progn (command "_union" ent1 (entlast)"") ))))))))) (if(=(vla-get-ObjectName(vlax-ename->vla-object ent1))"AcDbRegion") (progn (setq RESULT (rtos(/(vla-get-Area(vlax-ename->vla-object ent1))10000.0)2 2)) (command "_Erase" ent1 "") (alert(strcat "\nSurface totale: " RESULT)) (prompt "\nSélectionner le bloc de destination : ") (setq ss (ssget "_+.:e:s" '((0 . "INSERT") (2 . "SURFPIEC")))) (if ss (progn (setq e (ssname ss 0)) (setq a (entget e)) (while (/= (cdr (assoc 0 a)) "SEQEND") (if (= (cdr (assoc 0 a)) "ATTRIB") (progn (setq NOMATT (cdr (assoc 2 a))) (cond ((= NOMATT "000") (setq a (subst (cons 1 RESULT) (assoc 1 a) a ) ) (entmod a) (command "_REGEN") ) ) ) ) (setq e (entnext e)) (setq a (entget e)) ) ) ) ) (princ"\Pas de résultat") ) (setvar "DELOBJ" *delobj*) (princ) )
  19. en rajoutant la commande insérer après le alert (ou à la place ?) (command "_INSERT" "SURFPIEC" Pause "1" "1" "0" (rtos(/(vla-get-Area(vlax-ename->vla-object ent1))10000.0)2 2)) ou quelque chose comme ça. Attention à la variable ATTREQ qui devrait être à 1. Pour l'echelle du bloc, j'ai mis 1. On peut imaginer mettre une echelle en fonction de l'echelle de tracé. Il faudrait aussi que le bloc se situe dans un répertoire référencé dans la liste des chemins de fichiers de support, sinon le lisp ne va pas le trouver. Amicalement Zebulon_
  20. Il y a quelque temps, j'ai vu passer une question concernant le type de ligne Isolation http://www.cadxp.com/sujetXForum-8487.htm Je voudrais revenir sur ce sujet (un peu tard, je m'en excuse), pour dire que je n'utilise jamais ce type de ligne que je trouve, comme REBCAO, trop instable et dépendant de trop de paramètres. Donc, j'utilise une hachure. *ISOL,Isolation 0, 0,0, 0,1 21.8014, 0,0, -0.4642,0.1857, 0.1683,-2.5242 63.4349, 0.1563,0.0625, -0.2236,0.4472, 0.9783,-0.1398 21.8014, 0.5938,0.9375, -0.4642,0.1857, 0.1683,-2.5242 338.1986, 0.7500,1.0000, 0.4642,0.1857, 0.1683,-2.5242 116.5651, 0.9063,0.9375, 0.2236,0.4472, -0.1398,0.9783 338.1986, 1.3438,0.0625, 0.4642,0.1857, 0.1683,-2.5242 dont le module à l'avantage de faire une unité de haut. Si, vous voulez hachurer une cloison de 7cm, par exemple, il faut mettre l'echelle à 0.07 (si vous travaillez en mètre) et fixer le scu en fonction de cette cloison (origine et direction), par un SCU Objet (c'est le plus simple). Malheureusement, on ne sait pas (encore ?) faire de courbes dans les hachures, mais bon, compte tenu de l'usage, je pense que ça le fait que d'avoir des bouts de segments à la place d'un arc. Au moins, avec la hachure, on ne se casse plus la tête avec des ECHLTP, PSLTSCALE etc ... et on peut avoir tous les avantages de la hachure associative. Amicalement Zebulon_
  21. de temps en temps, il est intéressant d'ouvrir quand même la boîte de dialogue, quand par exemple la ligne (command "_plot") est la dernière ligne de ton lisp. Et si on ne dit rien, la commande _plot se lance en ligne de commande, comme le dit Bonuscad. Sauf si on fait (initdia) (command "_plot") où (initdia) force l'ouverture de la boîte de dialogue. C'est quelques fois utile. La liste des fonctions "influençables" par initdia : _ATTDEF,_ ATTEXT,_ BHATCH, _BLOCK, _COLOR, _IMAGE, _IMAGEADJUST, _INSERT, _LAYER, _LINETYPE, _MTEXT, _PLOT, _RENAME, _STYLE, _TOOLBAR et _VIEW. Amicalement Zebulon_
  22. zebulon_

    RECHARGER XREF MODIFIER

    Je pense que c'est ce qu'il faut faire. Mettre la variable VISRETAIN à 0 puis recharger la XREF. Mais attention à remettre la variable à 1 après. Amicalement Zebulon_
  23. Il n'y a pas de question idiote, il n'y a que les réponses qui peuvent l'être. ou encore à sotte question, point de réponse Ce qui est bien avec les citations, c'est que tu peux trouver tout et son contraire. Quant à la commande MAINLEV, elle se dit aussi _SKETCH. Alors si jamais c'était quand même un problème de traduction, ça devrait marcher. Mais bon je n'ai pas de LT... Mais je crois que tu as LT extender et j'ai dans mes archives un lisp qui s'appelle CLOUD.LSP (il date de 95, la préhistoire quoi) qui fait un peu la même chose, sauf avec des arcs. Entre temps, il y la commande REVCLOUD dans autocad. Peut-être pas dans LT ? ; CLOUD.LSP On-the-fly Clouds (c)1995, David Harrington (defun MYERROR (S ) ;;error trap program (if (/= S "\nFunction cancelled" ) (princ "\nEnding cloud..." ) ) (setq *ERROR* OLDERR ) (princ ) ) (defun C:CLOUD ( ) (setvar "cmdecho" 0 ) (setq LAST_PT (getpoint "\nPick cloud start point: " ) START_PT LAST_PT ARC_DIST (* 0.3125 (getvar "dimscale" ) ) ;; adjust arc size here! INC_ANGLE 110 ;; adjust arc angle here! OLDERR *ERROR* *ERROR* MYERROR ) (prompt "\nGuide crosshairs along cloud path..." ) (command "_pline" LAST_PT "_w" "0" "0" "_a" "_a" INC_ANGLE ) (while LAST_PT (setq NEXT_PT (cadr (grread 1 ) ) ) (if (> (distance LAST_PT NEXT_PT ) ARC_DIST ) (progn (command NEXT_PT "_a" INC_ANGLE ) (setq LAST_PT NEXT_PT ) ) ) (if (> (distance LAST_PT NEXT_PT ) (distance START_PT NEXT_PT ) ) (progn (command START_PT "_cl" ) (setq LAST_PT nil ) ) ) ) (princ "\nClosing cloud..." ) );end cloud.lsp il suffirait de changer les commandes _pline pour faire tracer des segments plutôt que des arcs pour obtenir un peu la même chose. Amicalement Zebulon_
  24. zebulon_

    Echelle(s)

    Bonjour, pour ma part je fais toujours ma mise en page en mettant la variable PSLTSCALE à 1 comme ça la longueur des tirets est toujours définie en fonction des unites de dessin de l'espace papier, donc en fonction du mm. Même si j'ai plusieurs FMULT à différentes échelles, la représentation des tirets dans les différents FMULT sera identique. Je trouve ça plus joli. Par contre, comme je travaille en mètre dans l'espace objet, les ECHLTP qui vont bien pour l'espace papier ne vont pas bien pour l'espace objet : les tirets sont représentés comme de traits continus. Donc je me suis fait un ptit lisp qui passe de l'espace objet à l'espace papier en changeant les ECHLTP (defun c:tmmo() (setvar "PSLTSCALE" 1) (setvar "REGENMODE" 0) (if (= 0 (getvar "TILEMODE")) (progn (setvar "LTSCALE" 0.02) (setvar "TILEMODE" 1) ) (progn (setvar "LTSCALE" 0.20) (setvar "TILEMODE" 0) ) ) (setvar "REGENMODE" 1) (princ) ) Pour finir, encore un point à évoquer, c'est le fichier AutoCAD.lin ou acadiso.lin qui servent à définir de nouveaux types de lignes dans un fichier. Il faut toujours utiliser le même, de préférence acadiso.lin, parce que ce n'est pas parce que les type de ligne s'appellent pareil qu'elles sont definies de la même manière. voir le variable MEASUREMENT Il m'est arrivé de récupérer un fichier avec un MEASUREMENT à 0, et là mes echelles habituelles de type de ligne et de hachures ne fonctionnent plus du tout. Donc, j'ai mis MEASUREMENT à 1, j'ai rechargé tout les styles de lignes à partir de acadiso.lin en écrasant ceux qui existaient dans le fichier pour revenir à mon standart. Tiens, un petit exercice assez intéressant pour les hachures : Vous faites 2 carrés de 10x10 côte à côte. Vous mettez MEASUREMENT à 1 Vous faites une hachure prédéfinie avec un motif ANGLE à une echelle 1 dans le premier carré Vous mettez MEASUREMENT à 0 Vous faites la même hachure prédéfinie avec un motif ANGLE à une echelle 1 dans le deuxième carré C'est pas la même chose au niveau de l'affichage même si les 2 hachures ont les mêmes propriétés. Amicalement Zebulon_ [Edité le 27/1/2006 par zebulon_]
  25. Peut-être en changeant les paramètrages du dessin ? _aecDwgSetup puis choisir l'onglet : Afficher puis changer la représentation d'affichage pour choisir celle que tu a définie quand tu as créé ton style de mur avec _aecWallStyle (Propriété des styles de murs/ Propriété d'affichage) Parce que, pour autan que je sache, un style de mur peut contenir plusieurs propriétés d'affichage (de l'esquisse jusqu'au plan d'exe) Amicalement Zebulon_
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité