Aller au contenu

bonuscad

Membres
  • Compteur de contenus

    5 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    56

Tout ce qui a été posté par bonuscad

  1. bonuscad

    Retrouver un fichier .lsp

    Simplement avec regedit dans démarrer, exécuter de windows. http://upload-perso.net/uploads1/1285102891.png Tu peux copier par exemple la clé du .log au-dessus (c'est la même), cela évite une erreur qui serait malvenue. NB: En même temps une adresse d'hébergeur d'images que je viens de découvrir et qui pourrait être utile au forum http://www.upload-perso.net/index.php Simple et il suffit de coller le lien en BBCode ici.
  2. A voir aussi: Comme suggéré par Charly21000 - Clique droit, "Propriétés" Puis aller dans l'onglet sécurité et regardé les autorisations d'administration...
  3. Regarde dans le dessin qui te pose problème l'état de la variable WRITESTAT . La valeur par défaut est 1, si à 0 le fichier est verrouillé.
  4. bonuscad

    faces 3d en polylignes3d

    Guère plus compliqué... Donc dans la même philosophie, pas testé en profondeur. (vl-load-com) (defun l-coor2l-pt (lst flag / ) (if lst (cons (list (car lst) (cadr lst) (if flag (caddr lst) 0.0)) (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag) ) ) ) (defun C:3dpolTO3dface ( / js ind count e_name lst_pt) (setvar "cmdecho" 0) (princ "\nChoix des 3DPolylignes.") (setq js (ssget '((0 . "POLYLINE") (-4 . "&") (70 . 9))) ind 0 count 0) (cond (js (setvar "CMDECHO" 0) (command "_.UNDO" "_Begin") (while (setq e_name (ssname js ind)) (setq ind (1+ ind) lst_pt (l-coor2l-pt (vlax-get (vlax-ename->vla-object e_name) 'Coordinates) T) ) (cond ((eq (length lst_pt) 3) (command "_.3DFACE" "_none" (trans (car lst_pt) 0 1) "_none" (trans (cadr lst_pt) 0 1) "_none" (trans (caddr lst_pt) 0 1) "" "" ) (setq count (1+ count)) ) ((eq (length lst_pt) 4) (command "_.3DFACE" "_none" (trans (car lst_pt) 0 1) "_none" (trans (cadr lst_pt) 0 1) "_none" (trans (caddr lst_pt) 0 1) "_none" (trans (cadddr lst_pt) 0 1) "_none" (trans (car lst_pt) 0 1) "" "" ) (setq count (1+ count)) ) ) ) (command "_.UNDO" "_End") (setvar "CMDECHO" 1) (princ (strcat "\n" (itoa count) " 3DFaces crées à partir de 3Dpolylignes.")) ) (T (prompt "\nAucune sélection valide.")) ) (prin1) )
  5. bonuscad

    cotation

    J'ai l'impression que c'est géré par celui-ci. Pour ma part quand je grippe ta cote (tous les échelles apparaissent à l'écran) et que la passe au dessus de l'endroit coté, la justification reprend le coté droit, en dessous le coté gauche... Et ceci aussi pour toutes les autres cotes pivotées.
  6. bonuscad

    Origine d\'un point

    Salut, Et si tu remplaces 'origin par 'coordinates ?
  7. Un code ancien que je me servais pour geler des calques par fenêtres de présentation (ne fonctionne donc que dans l'EP) en cliquant sur les objets. ((LAMBDA (/ e plan lplan lsplan drap e_bis plan_bis) (cond ((= (getvar "tilemode") 0) (setq drap (getvar "expert")) (setvar "expert" 0) (while (setq e (entsel "\nPointez une entite: ")) (setq e_bis (car (nentselp (cadr e)))) (setq e (car e)) (setq plan (cdr(assoc 8 (entget e)))) (setq plan_bis (cdr (assoc 8 (entget e_bis)))) (if (/= plan plan_bis) (progn (princ "\nL'entité fait partie d'un bloc ou d'un xref.") (initget "Insertion Entite _Insert Entitie") (if (eq (getkword "\nAdopter le plan d'insertion ou de l'entité - [insertion/Entite]: ") "Entitie") (setq plan plan_bis) (setq plan plan) ) ) ) (setq lplan (cons plan lplan)) (princ (strcat " " plan " sera gelé dans la fenêtre courante.")) ) (if lplan (progn (setq lsplan (apply 'strcat (mapcar '(lambda (x)(strcat x ",")) lplan) ) ) (command "._vplayer" "_freeze" lsplan "" "") ) ) ) (T (prompt "\nIncorrect, TILEMODE doit être à 0.")) ) (princ) ))
  8. Je pense aussi... Suite à une sortie incorrecte d'un dessin, ces fichiers dwl (DraWing Loocked - Dessin verrouillé) ne sont pas supprimé par Autocad. Si tu n'as pas de session en cours, avec l'explorateur windows tu fais une recherche de ce type de fichier sur les unités concernées et tu les supprimes tous. Si tu as souvent des plantages d'Autocad, il vaudrait mieux trouver la cause...
  9. Merci rhymone, mais lis bien mes commentaires, j'en mets pas une tartine pourtant... :( Néanmoins j'édite le code. A l'état actuel cela est bon pour les ellipses, cercles et arcs QUELQUE SOIT la hauteur du fil d'eau (enfin j'espère) Pour les LWPolyligne, j'ai avancé un peu mais j'aurais besoin d'un petit coup de main, j'en suis rendu à la création des sommets (cela à l'air bon), mais je voudrais supprimer les autres. L'inverse de addvertex n'a pas l'air d'exister. Une suggestion? Je pense abandonner les splines... (forme peu probable pour les canalisations)
  10. bonuscad

    faces 3d en polylignes3d

    J'ai modifié le code pour tenir compte du SCU courant.
  11. Ah oui! il y avait eu une petite correction depuis. Si tu travaille depuis un SCU, change ceci dans le code. dxf_10 (trans (cdr (assoc 10 ent)) 0 1) dxf_11 (trans (cdr (assoc 11 ent)) 0 1) dxf_12 (trans (cdr (assoc 12 ent)) 0 1) dxf_13 (trans (cdr (assoc 13 ent)) 0 1)
  12. Bonjour, Voir ici si cela fonctionne pour toi malgré l'ancienneté du lisp.
  13. bonuscad

    hachure-gradient

    J'sais pas si j'ai bien compris la question! mais avec la commande _hatchedit tu peux bien modifier l'angle des gradients (par rapport au centre si tu a choisi "centré" coché) dans les paramètres d'orientation!...
  14. Tu as déclaré (setq longsel1 (sslength sel1)) et exécuté ta boucle (while (< compteur longsel1) Le problème est que dans ta boucle tu modifie ton jeu de sélection si l'entité ne convient pas (ssdel entite sel1). Donc longsel1 ne correspond plus à l'index de contenu de sel1 puisque tu as modifié celui-ci et par conséquence un (ssname sel1 compteur) risque d'échouer. Il aurait fallu mettre longsel1 à jour dans ta boucle.
  15. A première vue c'est la ligne (setq OLD_R (cdr OLD_R)) qui te pose problème, car pour (subst) cette variable ne convient pas. La ligne précédente est valable.... ;)
  16. Bonjour, Pourquoi ne pas utiliser tout simplement les possibilités de filtres de (ssget)? Cela serait plus simple et t'éviterais d'analyser ton jeu de sélection! Exemple (sssetfirst nil (ssget (list (cons 0 "INSERT") (cons 410 (getvar "CTAB")) (cons 66 1) ) ) )
  17. Bon j'ai essayé d'avancer. Le code fonctionne pour les ellipses, cercles et arc du moment que le fil d'eau n'est pas supérieur au centre de ceux-ci. Pour le reste j'ai peur de buter (surtout les splines) Si d'autres veulent se donner la peine de se pencher la-dessus... moi je ne pense pas aller plus loin. Le code actuel non achevé et dans l'état. (vl-load-com) (defun l-coor2l-pt (lst flag / ) (if lst (cons (list (car lst) (cadr lst) (if flag (caddr lst) 0.0)) (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag) ) ) ) (defun c:perim_mouille ( / js ename obj l_dxf coeff_manning percent key pth hand_lin dxf_ent lst_pt first_pt secnd_pt lst_pt perim_wet area_wet hydraulic_ray q_deb_Manning) ;(setq key nil pth nil hand_lin nil) (princ "\nSélectionner le périmètre de la canalisation.") (while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE,SPLINE,ELLIPSE,CIRCLE,ARC"))))) (princ "\nCe n'est pas un objet valable!") ) (setq ename (ssname js 0) obj (vlax-ename->vla-object ename) l_dxf (entget ename) ) (foreach n l_dxf (if (member (car n) '(-1 -2 5 330)) (setq l_dxf (vl-remove n l_dxf)) ) ) (initget 6) (setq coeff_manning (getreal "\Coefficient de Manning? <0.015>: ")) (if (not coeff_manning) (setq coeff_manning 0.015)) (setq percent (getreal "\nEntrer la valeur de la pente en % ?<3%>: ")) (if (not percent) (setq percent 3.0)) (setq percent (/ (abs percent) 100.0)) (princ "\nSpécifiez un point de hauteur d'eau à l'intérieur de la canalisation: ") (while (and (setq key (grread T 4 0)) (/= (car key) 3)) (cond ((eq (car key) 5) (if hand_lin (entdel (handent hand_lin))) (setq pth (trans (cadr key) 1 0)) (entmake (append '( (0 . "LINE") (100 . "AcDbEntity") ) (if (eq (getvar "CTAB") "Model") '((67 . 0)) '((67 . 1))) (list (cons 410 (getvar "CTAB"))) (list (cons 8 (getvar "CLAYER"))) '( (62 . 256) (6 . "ByLayer") (370 . -2) (100 . "AcDbLine") ) (list (cons 10 pth)) (list (cons 11 (polar pth 0.0 1.0))) '((210 0.0 0.0 1.0)) ) ) (setq dxf_ent (entget (entlast)) hand_lin (cdr (assoc 5 dxf_ent))) (if (and (setq lst_pt (l-coor2l-pt (vlax-invoke (vlax-ename->vla-object (entlast)) 'IntersectWith obj acExtendThisEntity ) T ) ) (eq (length lst_pt) 2) ) (progn (entmod (setq dxf_ent (subst (cons 11 (cadr lst_pt)) (assoc 11 dxf_ent) (setq dxf_ent (subst (cons 10 (car lst_pt)) (assoc 10 dxf_ent) dxf_ent)) ) ) ) (setq first_pt (vlax-curve-getparamatpoint obj (car lst_pt)) secnd_pt (vlax-curve-getparamatpoint obj (cadr lst_pt))) (if (> (cadr (vlax-curve-getpointatparam obj (vlax-curve-getEndParam obj))) (cadr pth)) (setq perim_wet (abs (- (vlax-curve-getDistAtParam obj first_pt) (vlax-curve-getDistAtParam obj secnd_pt)))) (setq perim_wet (+ (- (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj)) (vlax-curve-getDistAtParam obj (max first_pt secnd_pt))) (vlax-curve-getDistAtParam obj (min first_pt secnd_pt)) ) ) ) (grtext -1 (strcat "Périmètre mouillé = " (rtos perim_wet 2 2))) ) (progn (setq perim_wet nil) (grtext)) ) ) (T (grtext "")) ) ) (grtext) (if perim_wet (progn (cond ((eq (vla-get-objectname obj) "AcDbEllipse") (entmake l_dxf) (if (> (cadr pth) (caddr (assoc 10 l_dxf))) (progn (vla-put-EndParameter obj (- secnd_pt (* 2 pi))) (vla-put-StartParameter obj first_pt) ) (progn (vla-put-EndParameter obj first_pt) (vla-put-StartParameter obj secnd_pt) ) ) ) ((eq (vla-get-objectname obj) "AcDbArc") (entmake l_dxf) (if (> (cadr pth) (caddr (assoc 10 l_dxf))) (progn (vla-put-StartAngle obj (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj first_pt))) (vla-put-EndAngle obj (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj secnd_pt))) ) (progn (vla-put-StartAngle obj (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj secnd_pt))) (vla-put-EndAngle obj (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj first_pt))) ) ) ) ((eq (vla-get-objectname obj) "AcDbCircle") (setq l_dxf (append (subst '(0 . "ARC") (assoc 0 l_dxf) l_dxf) (if (> (cadr pth) (caddr (assoc 10 l_dxf))) (list (cons 100 "AcDbArc") (cons 50 (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj first_pt))) (cons 51 (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj secnd_pt))) ) (list (cons 100 "AcDbArc") (cons 50 (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj secnd_pt))) (cons 51 (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj first_pt))) ) ) ) ) (entmake l_dxf) (setq obj (vlax-ename->vla-object (entlast))) ) ((eq (vla-get-objectname obj) "AcDbPolyline") (setq lst_pt (l-coor2l-pt (vlax-safearray->list (vlax-variant-value (vla-get-Coordinates obj))) nil)) (vla-addVertex obj (1+ (fix first_pt)) (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 1)) (list (car (vlax-curve-getpointatparam obj first_pt)) (cadr (vlax-curve-getpointatparam obj first_pt)) ) ) ) ) (setq bulg (vla-GetBulge obj (fix first_pt))) (vla-SetBulge obj (fix first_pt) (* bulg (- first_pt (fix first_pt)))) (vla-SetBulge obj (1+ (fix first_pt)) (* bulg (- (1+ (fix first_pt)) first_pt))) (vla-update obj) (vla-addVertex obj (1+ (1+ (fix secnd_pt))) (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 1)) (list (car (vlax-curve-getpointatparam obj (1+ secnd_pt))) (cadr (vlax-curve-getpointatparam obj (1+ secnd_pt))) ) ) ) ) (setq bulg (vla-GetBulge obj (1+ (fix secnd_pt)))) (vla-SetBulge obj (1+ (fix secnd_pt)) (* bulg (- secnd_pt (fix secnd_pt)))) (vla-SetBulge obj (1+ (1+ (fix secnd_pt))) (* bulg (- (1+ (fix secnd_pt)) secnd_pt))) (vla-update obj) ) ) (setq area_wet (vla-get-Area obj) hydraulic_ray (/ area_wet perim_wet) q_deb_Manning (* area_wet (expt hydraulic_ray (/ 2 3.0)) (sqrt percent) (/ 1 coeff_manning)) ) (princ "\nPérimètre mouillé = ") (princ perim_wet) (princ "\nSurface mouillée = ") (princ area_wet) (princ "\nRayon hydraulique = ") (princ hydraulic_ray) (princ "\nDébit hydraulique en m3/s = ") (princ q_deb_Manning) ) (entdel (entlast)) ) (prin1) ) [Edité le 16/9/2010 par bonuscad]
  18. A part lire le périphérique d'entrée avec la fonction (grread) , je ne vois pas trop d'autres solutions. Écrit rapidement pour montrer le principe en sachant que la fonction (initget) à été utilisé pour enrichir le menu contextuel, mais cela nécessite 2 click-droit. Mais on pourrait simplifier et lancer la commande directement. ((lambda ( / pt_view key pt_key msg) (setq pt_view (getvar "VIEWCTR")) (while (and (setq key (grread T 4 0)) (not (member (car key) '(11 25)))) (cond ((eq (car key) 5) (setq pt_key (cadr key)) ) ) ) (cond (pt_key (cond ((> (car pt_key) (car pt_view)) (cond ((> (cadr pt_key) (cadr pt_view)) (initget "Cercle _Circle") (setq msg "Cercle") ) (T (initget "Distance _Dist") (setq msg "Distance")) ) ) (T (cond ((< (cadr pt_key) (cadr pt_view)) (initget "Ligne _Line") (setq msg "Ligne") ) ) ) ) (if msg (command (strcat "_." (getkword (strcat "[" msg "]"))))) ) ) ))
  19. De quel coté est l'HOAX? Du coté de l'administration Américaine, ou du site Québécois... Je penche pour le 1er. Plus cela va, plus on nous trompe honteusement sur beaucoup de sujets. Comment bâtir un avenir sur des tromperies, une bonne mise à plat est indispensable pour trouver des solutions. Les gesticulations médiatiques ne sont que foutaises. Les liens pour apprécier: http://les7duquebec.wordpress.com/2010/08/31/lincroyable-arnaque-de-bp-le-puits-b-qui-na-jamais-ete-colmate/ et un autre plus ancien: http://les7duquebec.wordpress.com/2010/07/20/bp-les-medias-et-obama-mentent-impossible-de-colmater-le-volcan-de-petrole/
  20. En plus celui génère des PDF Multi-couches (semblable aux calques d'Autocad), chose que ne sait pas faire PDFCreator. Un petit inconvénient est que ces PDF sont généralement plus lourds, mais avec ce seul fichier l'utilisateur pourra produire différentes sorties avec les couches qui l'intéresse à chaque impression, cela avec un Acrobat Reader standard, pas besoin d'installer un logiciel spécifique. Autodesk s'est tiré une balle dans le pied :exclam:
  21. Pas essayé de le faire... mais un bloc dynamique pré-paramétré mis en réseau rectangulaire? Je ne sais pas par contre si l'édition multiple de tel bloc est possible, à voir!
  22. Bonsoir, Molitul n'a pas encore répondu! Je ne sais même pas si cela peut convenir à sa demande! Je pense que c'est possible assez facilement, mais le souci est que je serais obligé de créer une nouvelle entité de contour pour avoir la surface (dans la routine je ne crée pas de nouvelle entité mis a part la ligne de fil d'eau désignée). Faire ceci dans une boucle (while) avec (grread) risque d'être pénalisant en temps de réponse. Mais on peut très bien l'envisager après avoir choisi le fil d'eau avec le périmètre mouillé choisi. En ce moment pas trop disponible pour faire essayer de compléter ce truc. Peut être par la suite... ou d'autres participants (en hydraulique)?
  23. Bonjour, Je ne suis pas un hydraulicien, donc pour moi ta formule ne reflète par grand chose. Je peux simplement te proposer un lisp qui te permettra de choisir une courbe représentant la section de ton tuyau ou cunette (tuyau non fermé). Il te donnera en dynamique (dans la barre d'état), le périmètre mouillé selon la position du curseur qui sera la hauteur d'eau désirée. Le programme devrait fonctionner avec tout type de courbe, du moment qu'il y a seulement que 2 intersections pour le niveau d'eau sur la coupe de ta canalisation. Si un hydraulicien veut compléter le code pour appliquer la formule... (vl-load-com) (defun l-coor2l-pt (lst flag / ) (if lst (cons (list (car lst) (cadr lst) (if flag (caddr lst) 0.0)) (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag) ) ) ) (defun c:perim_mouille ( / js ename obj key pth hand_lin dxf_ent lst_pt first_pt secnd_pt perim_m) (princ "\nSélectionner le périmètre de la canalisation.") (while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE,SPLINE,ELLIPSE,CIRCLE,ARC"))))) (princ "\nCe n'est pas un objet valable!") ) (setq ename (ssname js 0) obj (vlax-ename->vla-object ename) ) (princ "\nSpécifiez un point de hauteur d'eau à l'intérieur de la canalisation: ") (while (and (setq key (grread T 4 0)) (/= (car key) 3)) (cond ((eq (car key) 5) (if hand_lin (entdel (handent hand_lin))) (setq pth (trans (cadr key) 1 0)) (entmake (append '( (0 . "LINE") (100 . "AcDbEntity") ) (if (eq (getvar "CTAB") "Model") '((67 . 0)) '((67 . 1))) (list (cons 410 (getvar "CTAB"))) (list (cons 8 (getvar "CLAYER"))) '( (62 . 256) (6 . "ByLayer") (370 . -2) (100 . "AcDbLine") ) (list (cons 10 pth)) (list (cons 11 (polar pth 0.0 1.0))) '((210 0.0 0.0 1.0)) ) ) (setq dxf_ent (entget (entlast)) hand_lin (cdr (assoc 5 dxf_ent))) (if (and (setq lst_pt (l-coor2l-pt (vlax-invoke (vlax-ename->vla-object (entlast)) 'IntersectWith obj acExtendThisEntity ) T ) ) (eq (length lst_pt) 2) ) (progn (entmod (setq dxf_ent (subst (cons 11 (cadr lst_pt)) (assoc 11 dxf_ent) (setq dxf_ent (subst (cons 10 (car lst_pt)) (assoc 10 dxf_ent) dxf_ent)) ) ) ) (setq first_pt (vlax-curve-getparamatpoint obj (car lst_pt)) secnd_pt (vlax-curve-getparamatpoint obj (cadr lst_pt))) (if (> (cadr (vlax-curve-getpointatparam obj (vlax-curve-getEndParam obj))) (cadr pth)) (setq perim_m (abs (- (vlax-curve-getDistAtParam obj first_pt) (vlax-curve-getDistAtParam obj secnd_pt)))) (setq perim_m (+ (- (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj)) (vlax-curve-getDistAtParam obj (max first_pt secnd_pt))) (vlax-curve-getDistAtParam obj (min first_pt secnd_pt)) ) ) ) (grtext -1 (strcat "Périmètre mouillé = " (rtos perim_m 2 2))) ) (progn (setq perim_m nil) (grtext)) ) ) (T (grtext "")) ) ) (grtext) (if perim_m (princ perim_m) (entdel (entlast))) (prin1) )
  24. Tiens c'est vrai que l'adresse principale est redevenu comme d'antan. Je vais refaire mon marque page :P Ça résoudra peut être le problème (et effacer le cookie, ainsi que le mot de passe enregistré)
  25. Salut, Il y a bien la variable LASTANGLE (en lecture seule) Elle enregistre la dernière direction donnée, mais je ne suis pas sur de bien comprendre dernier objet inséré Pour une insertion de bloc par exemple, je pense pas que cela soit conservé.
×
×
  • 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é