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

    Superposition de bloc

    Bonjour, Logiquement; tout ce qui a été créé après par le client sera accessible en premier dans la base du dessin. Par exemple une répétition de "EFFACER" "Dernier" prendra forcément les entités créé par le client. J'avais fais un lisp (il date un peu et je ne l'ai jamais révisé...) qui pourra peut être t'aider? (defun c:back_trace ( / e_first dxf_ent name_ent hd_ent lst_hd lght_lst n ent dxf_67 dxf_0 dxf_8 dxf_410 key) (if (setq e_first (entnext)) (setq dxf_ent (entget e_first) name_ent (cdar dxf_ent) hd_ent (cdr (assoc 5 dxf_ent)) lst_hd (list hd_ent) ) ) (while name_ent (if (setq e_next (entnext name_ent)) (setq dxf_ent (entget e_next) name_ent (cdar dxf_ent) hd_ent (cdr (assoc 5 dxf_ent)) lst_hd (cons hd_ent lst_hd) ) (setq name_ent nil) ) ) (cond (lst_hd (setvar "cmdecho" 0) (if (eq (getvar "ctab") "Model") (command "_.shademode" "_2d") ) (foreach n lst_hd (redraw (handent n) 2)) (setq lght_lst (length lst_hd) n 0) (princ "\n<+/-> pour remonter ou redescendre la base du dessin; <Entrée>/[Espace] pour finir!.") (while (and (>= n 0) (< n lght_lst)) (setq ent (handent (nth n lst_hd)) dxf_ent (entget ent) dxf_67 (assoc 67 dxf_ent) dxf_0 (cdr (assoc 0 dxf_ent)) dxf_8 (cdr (assoc 8 dxf_ent)) dxf_410 (cdr (assoc 410 dxf_ent)) ) (if (/= (getvar "ctab") dxf_410) (progn (setvar "ctab" dxf_410) (if (eq (getvar "ctab") "Model") (command "_.shademode" "_2d") ) (foreach n lst_hd (redraw (handent n) 2)) ) ) (cond ((and (= (getvar "ctab") dxf_410) (member dxf_0 (list "3DFACE" "3DSOLID" "ACAD_PROXY_ENTITY" "ARC" "ARCALIGNEDTEX" "ATTDEF" "BODY" "CIRCLE" "DIMENSION" "ELLIPSE" "HATCH" "IMAGE" "INSERT" "LEADER" "LINE" "LWPOLYLINE" "MLINE" "MTEXT" "OLEFRAME" "OLE2FRAME" "POINT" "POLYLINE" "RAY" "REGION" "RTEXT" "SHAPE" "SOLID" "SPLINE" "TEXT" "TOLERANCE" "TRACE" "VIEWPORT" "WIPEOUT" "XLINE" ) ) ) (setq key (grread nil 2 1)) (cond ((member key '((2 13) (2 32))) (setq n -1) ) ((eq (cadr key) 43) (setq n (1- n)) (redraw ent 2) (if (< n 0) (progn (setq n 0) (alert "Dernière entité du dessin atteinte!") ) ) ) ((eq (cadr key) 45) (setq n (1+ n)) (redraw ent 1) (if (= n lght_lst) (progn (setq n (1- n)) (alert "Première entité du dessin atteinte!") ) ) ) ) (grtext -1 (strcat "Entité: " dxf_0 " - Calque: " dxf_8)) ) (T (cond ((eq (cadr key) 43) (setq n (1- n)) (if (< n 0) (setq n 0) ) ) ((eq (cadr key) 45) (setq n (1+ n)) (if (= n lght_lst) (setq n (1- n)) ) ) (T (setq n (1+ n)) ) ) ) ) ) (grtext) (command "_.regenall") (setvar "cmdecho" 1) ) (T (alert "Le dessin est vide!")) ) (prin1) )
  2. bonuscad

    Référence externes

    Bonjour, Ouvrir tes 2 fichier et dans chacun d'eux, dans le SCG, utilise la commande BASE (ou la variable INSBASE); normalement par défaut elle est à 0,0,0 Sauvegarde et réessayes l'insertion en Xref...
  3. Pour moi qui charge mes lips par un fichier personnalisé MNL, la fonction APP ne m'est d'aucun secour. Ce n'est pas un reproche, mais il y a tellement de façon pour initialiser un environnement. (atoms-family 1) reste le meilleur moyen d'identifier tout changement. Le mieux, le faire avant toute personnalisation, sauvegarder dans un fichier externe le résultat, puis par la suite comparer la nouvelle liste après personalisation de son environnement au contenu du fichier externe pour connaitre les différences. Ca me rappele cette très veille discussion où j'avais réfléchi à ce procédé. Je n'ai jamais retravaillé dessus depuis... je ne sais pas si ça vaut le coup, la liste que ça me retournerait me ferait peur! :blink:
  4. En tout cas je ne pense pas que l'utilisation de caractère spéciaux soient judicieux dans les noms de calque. Bien que: <>/\"":;?*|,= restent interdit, il reste le # ou le $ (et d'autres) Quand on lie un xref, par exemple,on se retrouve avec des $, donc si celui-ci est utilisé volontairement... faire des filtres devient laborieux! et puis ce que dit Vincent peut réserver des surprises
  5. bonuscad

    Attribut invisible.

    Bonjour, Une fois dans l'éditeur de bloc, utiliser la commande _BATTMAN Sélectionner alors l'attribut, puis le bouton "Modifier" et alors vous devriez avoir accès aux coches des différent modes: décocher "Invisible". Un REGEN sera peut être nécessaire à la sortie de la modification...
  6. Bonjour, Je pense que c'est un comportement normal, on peux utiliser des caractères spéciaux pour filtrer des chaines de carcatères dans (ssget); voir la fonction (wcmatch) en utilisant cette syntaxe, ça ne pose plus de problème: (sssetfirst nil (ssget "_X" (list (cons 8 (vl-string-subst "`]" "]" (vl-string-subst "`[" "[" (cdr (assoc 8 (entget (car (entsel "Effectuer une sélection par calque => Choix d'un objet :")))))))))))
  7. Ayant eu un peu de temps (celui ci se fait rare) Un code succinct pour transcrire la démarche expliquée ci dessus. Au final il te faudra sélectionner les polylignes et si un texte (correspondant à l'OD) est trouvé à l'extérieur, il sera rapatrié automatiquement à l'intérieur. Le code est assez sommaire, il te faudra certainement l'affiner. (defun c:test ( / ) (setq js_pl (ssget '( (0 . "LWPOLYLINE") (67 . 0) (410 . "Model") (8 . "Parcelles") (100 . "AcDbPolyline") (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (210 0.0 0.0 1.0) ) ) ) (cond (js_pl (repeat (setq n (sslength js_pl)) (setq ent (ssname js_pl (setq n (1- n)))) (setq value (ade_odgetfield ent "Parcelle" "NDEB" 0)) (cond ((not (zerop value)) (setq pt_centroid (ade_expreval ent ".centroid" "point") js_text (ssget "_C" (mapcar '- pt_centroid '(100.0 100.0 0.0)) (mapcar '+ pt_centroid '(100.0 100.0 0.0)) (list '(0 . "TEXT") '(67 . 0) '(410 . "Model") '(8 . "Num_voies_Textuels") '(100 . "AcDbText") '(40 . 1.1) (cons 1 (itoa value)) '(41 . 1.0) '(51 . 0.0) '(7 . "Legend") '(71 . 0) '(72 . 1) '(210 0.0 0.0 1.0) '(73 . 2) ) ) ) (cond (js_text (setq ent_text (entget (ssname js_text 0)) pt_ins (cdr (assoc 10 ent_text)) ) (entmake (list '(0 . "LINE") (cons 10 pt_ins) (cons 11 pt_centroid))) (setq pt_int (vlax-invoke (vlax-ename->vla-object (entlast)) 'IntersectWith (vlax-ename->vla-object ent) acExtendNone ) ) (entdel (entlast)) (if pt_int (cond ((> (distance pt_centroid pt_ins) (distance pt_centroid pt_int)) (setq new_pt (polar pt_int (angle pt_ins pt_centroid) 0.75)) (setq ent_text (subst (cons 10 new_pt) (assoc 10 ent_text) ent_text ) ent_text (subst (cons 11 new_pt) (assoc 11 ent_text) ent_text ) ) (entmod ent_text) ) ) ) ) ) ) ) ) ) ) (prin1) )
  8. Bonjour, Je n'ai pas le temps de dégrossir le code, mais voici la procédure que je ferais si je devais faire cela. * Récupération de polyligne fermées dans le calque parcelle * Dans une boucle, pour chaque polyligne récupérer avec (ade_odgetfield) le champ NDEB. * Avec la valeur de ce champ créer une sélection automatique des textes dans un rectangle de 100X100 (ça devrait suffire) par rapport au centroid de la parcelle Un exemple de fonction simple pour obtenir le centroid ((lambda ( / js n ent pt_centroid lst_pt) (setq js (ssget)) (cond (js (repeat (setq n (sslength js)) (setq ent (ssname js (setq n (1- n))) pt_centroid (ade_expreval ent ".centroid" "point") lst_pt (cons pt_centroid lst_pt) ) ) ) ) )) * Extraire du jeu de sélection l'entité texte ayant la même valeur que le champ d'OD afin d'avoir son point d'insertion. * Rechercher l'intersection étendue de la ligne virtuelle entre le point d'insertion et le centroid et la polyligne de la parcelle. * Si la distance point d'insertion centroid est plus grande que la distance centroid intersection étendue, déplacer le point. Voici dans les grandes lignes comment je procéderai.
  9. bonuscad

    petit modif sur lisp

    C'est du massacre à la tronconeuse que tu nous fait là getvar interroge une variable et tu lui balance une commande dedans... Je confirme Pour la syntaxe c'est simplement: (vlax-put copy 'Layer "TRAITEMENT_TOLE") Mais je le répète; DANS LE CAS OU LE CALQUE EXISTE. Autrement par securité il vaut mieux avoir cette syntaxe: (cond ((null (tblsearch "LAYER" "TRAITEMENT_TOLE")) (vla-add (vla-get-layers *acdoc*) "TRAITEMENT_TOLE") ) ) (vlax-put copy 'Layer "TRAITEMENT_TOLE")
  10. bonuscad

    petit modif sur lisp

    Bonjour, Tu n'as pas tout posté le code en entier et bien sur la modif se fait dans une autre fonction. Ici c'est dans la fonction (defun CopySegments Tu as une section qui ressemble à ceci: (foreach prop '(Elevation Layer Linetype LinetypeGeneration LinetypeScale Lineweight Normal Thickness TrueColor ) (if (vlax-property-available-p pline prop) (vlax-put copy prop (vlax-get pline prop)) ) ) Tu rajoutes une ligne aprés cette section pour obtenir par exemple: (foreach prop '(Elevation Layer Linetype LinetypeGeneration LinetypeScale Lineweight Normal Thickness TrueColor ) (if (vlax-property-available-p pline prop) (vlax-put copy prop (vlax-get pline prop)) ) ) (vlax-put copy 'Layer (getvar "CLAYER")) Ceci te mettra les entités dans le calque courant, tu peux mettre autre chose, mais attention ce calque doit exister.
  11. Bonjour, Tout à fait, le but ici n'est pas de refaire un COVADIS, mais simplement d'avoir un outil pour palier au manque pour un besoin simple de fonctions pour faire quelque chose de similaire sans acquérir l'artillerie lourde (apprentissage et coût) d'un applicatif comme COVADIS. Je ne recherche pas la compatibilité avec celui-ci, ni faire un substitut (ça serait prétencieux de ma part), simplement des petites fonctions qui permettent de faire certaines choses sans avoir à acquérir un logiciel couteux. COVADIS sera toujours inspensable pour celui qui veut faire un projet "sérieux". Le carroyage, les talus, la clothoïde pour ne citer que les principaux n'ont été créer que dans ce but: avoir un paliatif qui permet d'avoir un rendu facilement sur un petit projet à la marge. Il faudrait voir si d'autre personne ont ce problème car comme pour talus aucun appel à (command) dans le lisp. J'ai l'impression que ce problème est propre seulement à ton installation. Oui, mais je pourrais étendre la fonction au bloc avec attribut. D'ailleurs la fonction écrite ici est issue d'une demande sur un forum anglais, où là, la récupération se faisait sur un bloc avec attribut Dicussion originale d'où est extrait le code. Ton test montre la différence entre Covadis et mon petit applicatif. Covadis s'appuit (je suppose) sur le calcul d'un MNT où les rupture de pentes ont étés définies pour faire son interpolation, donc la tringulation faite ne sera pas forcément identique à celle faite par mon algorithme de ma routine qui est beaucoup plus simpliste. En effet pour un point X il existe 2 solutions pour qu'il appartienne à un triangle (ils ont un coté commun), ma routine choisi par défaut celui qui a les sommets les moins éloignés (mais ce n'est pas forcément le plus judicieux en cas de rupture de pente). Donc ce fait peut expliquer des différences (la plus part du temps minimes) dans les résultats trouvés.
  12. Bonjour, Pour ceux qui ne possède pas Covadis, je vous propose ce qui suit: Que fait ce programme? Il va vous demander de sélectionner un modèle de point (en 3D de préférence, autrement c'est pas bien la peine) pour créer un filtre automatiquement depuis ses caractéristiques (plan, couleur, espace etc...) Il vous sera alors demander si vous voulez agir sur tous les points ou seulement ceux qui sont dans la zone d'affichage. L'option affichage est proposée par défaut car il sera plus rapide de n'agir que dans la zone d'écran pour effectuer que quelques interpolations. Ensuite il vous sera demandé un point que vous désirez interpoler. Le programme va alors rechercher les 3 points les plus proches ET qui sont susceptible de contenir le point demandé à l'intérieur du triangle formé par ces 3 points. (ce triangle virtuel est d'ailleurs dessiné, mais disparaît à la fin ou lors d'un pan, zoom). Le z est affiché dans la barre de commande et le point 3D interpolé dessiné dans le calque courant. Le programme tourne en boucle tant que vous fournissez des point à définir. Etant écrit depuis peu, il peu y avoir des bugs... Les fonctions vectorielles utilisée sont de (gile) Le code ;vect - v^v - pscal par Gilles Chanteau ;****************** (defun vect (p1 p2) (mapcar '- p2 p1) ) (defun v^v (v1 v2) (list (- (* (cadr v1) (caddr v2)) (* (caddr v1) (cadr v2))) (- (* (caddr v1) (car v2)) (* (car v1) (caddr v2))) (- (* (car v1) (cadr v2)) (* (cadr v1) (car v2))) ) ) (defun pscal (v1 v2) (apply '+ (mapcar '* v1 v2)) ) ;****************** (defun pt_include (p1 p2 p3 px /) (cond ( (and (>= (pscal (v^v (vect p1 p2) (vect p1 px)) (v^v (vect p1 px) (vect p1 p3))) 0) (>= (pscal (v^v (vect p2 p1) (vect p2 px)) (v^v (vect p2 px) (vect p2 p3))) 0) (>= (pscal (v^v (vect p3 p1) (vect p3 px)) (v^v (vect p3 px) (vect p3 p2))) 0) ) T ) (T nil) ) ) (defun c:Z_between3pt ( / ptc pix_size k js dxf_cod lremov mod_sel ptx lst_tmp nw_lst n pt nw_js nb ent lst_pt X1 X2 X3 Y1 Y2 Y3 Z1 Z2 Z3 E1 E2 E3 E4 Z) (cond ((equal (getvar "VIEWDIR") '(0.0 0.0 1.0) 1E-13) (setq ptc (getvar "VIEWCTR") pix_size (getvar "SCREENSIZE") k (/ (getvar "VIEWSIZE") (cadr pix_size)) pix_size (list (* (car pix_size) k 0.5) (* (getvar "VIEWSIZE") 0.5) 0.0) ) (princ "\nChoix d'un point modèle pour constituer le filtrage: ") (while (null (setq js (ssget "_+.:E:S" (list '(0 . "POINT") (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) ) ) ) ) (princ "\nCe n'est pas un objet valable pour le filtrage, requiert un point!") ) (setq dxf_cod (entget (ssname js 0))) (foreach m (foreach n dxf_cod (if (not (member (car n) '(0 67 410 8 6 62 48 39 210 50))) (setq lremov (cons (car n) lremov)) lremov)) (setq dxf_cod (vl-remove (assoc m dxf_cod) dxf_cod)) ) (initget "Tout Affichage _All Display") (if (eq (setq mod_sel (getkword "\nMode de sélection filtrée, choix [Tout/Affichage]<Affichage>: ")) "All") (setq js (ssget "_X" dxf_cod)) (setq js (ssget "_C" (trans (mapcar '- (trans ptc 1 0) pix_size) 0 1) (trans (mapcar '+ (trans ptc 1 0) pix_size) 0 1) dxf_cod)) ) (cond (js (initget 9) (while (setq ptx (getpoint "\nDonner un point pour identifier le Z: ")) (setq ptx (trans ptx 1 0) lst_tmp nil nw_lst nil lst_pt nil) (repeat (setq n (sslength js)) (setq pt (cdr (assoc 10 (entget (ssname js (setq n (1- n)))))) lst_tmp (cons (cons (distance (list (car pt) (cadr pt)) (list (car ptx) (cadr ptx))) n) lst_tmp) ) ) (while (and (not (zerop (length lst_tmp))) (< (length nw_lst) 3)) (setq nw_lst (cons (assoc (apply 'min (mapcar 'car lst_tmp)) lst_tmp) nw_lst) lst_tmp (vl-remove (assoc (apply 'min (mapcar 'car lst_tmp)) lst_tmp) lst_tmp) ) (if (eq (length nw_lst) 3) (if (not (pt_include (list (cadr (assoc 10 (entget (ssname js (cdar nw_lst))))) (caddr (assoc 10 (entget (ssname js (cdar nw_lst))))) 0.0) (list (cadr (assoc 10 (entget (ssname js (cdadr nw_lst))))) (caddr (assoc 10 (entget (ssname js (cdadr nw_lst))))) 0.0) (list (cadr (assoc 10 (entget (ssname js (cdaddr nw_lst))))) (caddr (assoc 10 (entget (ssname js (cdaddr nw_lst))))) 0.0) (list (car ptx) (cadr ptx) 0.0) ) ) (setq nw_lst (cdr nw_lst)) ) ) ) (cond ((and nw_lst (eq (length nw_lst) 3)) (setq nw_js (ssadd) nw_js (ssadd (ssname js (cdar nw_lst)) nw_js) nw_js (ssadd (ssname js (cdadr nw_lst)) nw_js) nw_js (ssadd (ssname js (cdaddr nw_lst)) nw_js) nb 0 ) (repeat (setq n (sslength nw_js)) (setq ent (ssname nw_js (setq n (1- n))) pt (cdr (assoc 10 (entget ent))) lst_pt (cons pt lst_pt) ) ) (grvecs (list 3 (trans (car lst_pt) 0 1) (trans (cadr lst_pt) 0 1) 3 (trans (cadr lst_pt) 0 1) (trans (caddr lst_pt) 0 1) 3 (trans (caddr lst_pt) 0 1) (trans (car lst_pt) 0 1) ) ) (foreach item '(("X" . "'car") ("Y" . "'cadr") ("Z" . "'caddr")) (mapcar '(lambda (x) (set (read (strcat (car item) (itoa (setq nb (1+ nb))))) x)) (mapcar (eval (read (cdr item))) lst_pt) ) (setq nb 0) ) (setq E1 (+ (* X1 (- Y2 Y3)) (* X2 (- Y3 Y1)) (* X3 (- Y1 Y2))) E2 (+ (* Y1 (- Z2 Z3)) (* Y2 (- Z3 Z1)) (* Y3 (- Z1 Z2))) E3 (+ (* Z1 (- X2 X3)) (* Z2 (- X3 X1)) (* Z3 (- X1 X2))) E4 (- (- (* E2 X1)) (* E3 Y1) (* E1 Z1)) Z (- (- (* (/ E2 E1) (car ptx))) (* (/ E3 E1) (cadr ptx)) (/ E4 E1)) ) (entmake (list '(0 . "POINT") (assoc 67 (entget ent)) (assoc 410 (entget ent)) (cons 8 (getvar "CLAYER")) (cons 10 (list (car ptx) (cadr ptx) Z)) (assoc 210 (entget ent)))) (print Z) ) (T (princ "\nPas assez de points trouvés pour que le point cherché soit inclu dans le triangle!")) ) (initget 8) ) (redraw) ) ) ) (T (princ "\nVous n'êtes pas en vue orthogonale! rectifiez et relancer la commande")) ) (prin1) )
  13. Oui Script et macro ont une syntaxe un peu différente. D'ailleurs pour les scripts (fichier .SCR) je conseille plutôt les retours de ligne que les espaces qui sont plus facilement identifiable en nombre que lorques qu'ils sont exprimé par des espaces, surtout quand ils sont successifs.
  14. bonuscad

    TriSSStesse

    Je dois reconnaitre (vu la suite des évennements) que ça doit être le cas, donc mes sentiments étaient erronés. Mais l'info de cette carte d'identité faisait tellement "pain béni" que je restais méfiant... Traqués comme il sont, ils vaut mieux ne pas les rencontrer car ils doivent être fou-furieux. PS: D'ailleurs je viens d'apprendre qu'ils s'étaient trompé d'adresse au départ pour se rendre à Charlie Hebdo, donc pas des lumières; ce qui fait de bon fanatique. Désolé du dérapage, surtout dans un moment pareil! :unsure:
  15. bonuscad

    TriSSStesse

    Ce n'est pas à moi qu'elle l'a dit, c'est bien elle qui l'a claironnée pour que les médias relaient l'info. Alors que généralement on a plutôt droit à: "Pas de déclarations pour le moment" quand le sujet est sensible. Là je pourrais être d'accord, mais c'est un jeu risqué lorsque ça touche l'opinion des Français car inévitablement ça crée des polémiques et peut entrainer une division. La preuve ici. Je ne les voie pas inconscients, mais plutôt très posés et horriblement calmes dans la vidéo. D'ailleurs je pense que c'est cette vidéo amateur diffusé sur le net, qui a forcé nos dirigeants militaire à évoquer le fait que "ce sont des personnes parfaitement entrainés à ce genre de mission." [humour on] Si nos gars du GIGN partent en mission avec leur carte d'identité, permis, chéquier et carte bancaire, alors ils sont parfaitement entrainés![humour off] Leurs papiers aurait du être à mon avis disponible dans le second véhicule en attente, pour redevenir citoyen lambda et pouvoir continuer leur périble normalement. Enfin, il me semble que ce doit être B A BA des gars entrainés. Disons qu'ils savent que c'est une probalité très forte, mais leur premier souhait doit être bien de s'en sortir puisque qu'un second véhicule était en attente, on été pas face à un attentat suicide. Alors explique moi scientifiquement comment un terroriste dans un avion qui s'écrase avec des températures qui soit disant ont fait fondre les structures en acier, ce qui explique officiellement l'écroulement des tours, une carte d'identité en plastique soit restée inctate dans les décombres? Pour ma part j'ai beaucoup de mal à accepter ce fait scientifique mais ça ne regarde que moi. C'est comme la preuve scientifique d'arme de destruction massive brandit dans une petite fiole. Je sais je l'ai inventé... Pour en finir je n'ai pas énoncé une théorie de conspiration ou de complot, mais simplement que les faits annoncés par les médias me font "tiquer". Ce sont mes sentiments et pas une affirmation. Il peuvent être faux, j'en ai bien conscience. Si charlie à le droit à la liberté d'expression, il me semble que moi aussi peut prétendre au même droit: JE SUIS CHARLIE
  16. bonuscad

    format non pris en compte

    Idem Aucun soucis sur Map2014
  17. bonuscad

    TriSSStesse

    Respect aux victimes :( Mais j'attends que l'émotion soit passé car quand même des choses me font "tiquer"! WTC 11.11.2001 carte d'identité inctacte d'un terroriste retrouvée dans les décombres... Charlie: carte d'identité retrouvé dans la voiture utilisée par les terroristes... "On a affaire à des gens bien entrainés et formés à cela" selon les voix gouvernementale, et ils oublient leur carte d'identité !?!? :o Plus les ficelles sont grosses, plus ça passe...
  18. bonuscad

    format non pris en compte

    Réponse bête: Le chemin dans le gestionnaire des xref te parait-il bon? Ne pointerai t-il pas vers un doublon ailleurs du fichier qui aurait subit une modification de format?
  19. comme je l'ai dis: Si tu veux vraiment que le code t'inscrive l'angle au centre, il te faut juste modifier la ligne: "A = " (angtos (- pi (* 2 alpha)) 0 4) "%%d" en "A = " (angtos (* 2 alpha) 0 4) "%%d" Voilà c'était juste pour l'info...
  20. Avec le commandes natives, je ferais: 1- commande -SCU option Objet et je clique sur le segment noir 2- commande (variable) SNAPANG et je rentre la valeur 10 ou -10 (suivant horaire ou anti horaire) 3- commande LIGNE du point obligé et en mode ortho actif je fixe le point de fin Après soit avec les grip ou la commande ajuster je ramène le dernier point à l'intersection. Ces 3 opérations peuvent être mises en macro avec les pauses appropriées.
  21. bonuscad

    LISP TALUS

    Bonjour lilian Hé oui, je m'étais pas concerté avec Didier à l'époque pour le choix du nom :D c'est un nom tellement logique que voilà... C'est quand tu as des grands talus à représenter. Essayes par exemple entre deux polyligne en donnant une longueur de barbule assez courte de façon à ce qu'elle puisse être représentée plusieurs fois entre la crête et le pied de talus. Un résultat graphique vaudra mieux qu'un grand discour.
  22. bonuscad

    LISP TALUS

    Dans le message #1; lili2006 poste mon code talus.lsp Dans le message #3; il parle de "EDTALUS.DCL" et "FDTALUS.DCL" qui concerne les routines de Didier S'il n'a pas talus.dcl et talus.slb, mon code cité en #1 ne fonctionnera pas CQFD! Effectivement il y a un bug que je viens d'essayer de corriger. Essayes cette version corrigée que j'ai testée brievement pour des Polylignes splinées. Merci pour le signalement de l'imperfection. talus3D.lsp
  23. En voyant la réponse d'Olivier, je pense avoir mal compris le sujet (je suis resté fixé sur ) Je pense alors à ARTDB.lsp qui répondrait plus à ton besoin. Pour l'angle au centre, c'est le complémentaire de l'angle au sommet. Rappel: A = Angle au sommet R = Rayon T = longueur de la Tangente D = longueur Développée de l'arc B = Longueur de la flêche (sommet de l'arc à l'intersection des tangentes)
  24. bonuscad

    LISP TALUS

    Ces 2 fichier ne font pas partie de mon dévellopement, je pense (de souvenir) qu'il sont de Maxence Delannoy qui avait aussi une routine talus. Donc je maintient ma réponse: le lisp ne trouve pas le DCL adéquate Le mien est celui-ci talus.dcl Le slB (bibliothèque de clichés et non sld cliché unique) talus.slb Donc bien choisir quel développement à utiliser le mien ou celui de Maxence (ne pas faire un mixe des 2 car ça va pas le faire... (Hé oui quoi de plus logique ils s'appelent tout les 2 TALUS.LSP) Quant à Là je ne comprends pas du tout car il n'y a aucun appel à command dans mon lisp. Je pense que ton erreur doit venir d'ailleurs (un lisp chargé automatiquement avant qui fout la pagaille?)
  25. Bonjour, J'avais fais ce fil Je le trouve ressemblant à ta problèmatique, tu pourrais peut être l'adapter à ton besoin?
×
×
  • 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é