stugeol Posté(e) le 16 octobre 2013 Posté(e) le 16 octobre 2013 Pour représenter des bordures je dois décaler une polyligne représentantle fil d’eau de la bordure. Pour une bordure T2 par exemple : décaler le fil d’eau de 0.075Affecter le type de ligne Bor025à la dernière polyligne crééemettre la largeur de la dernière polyligne à 0.13décaler la dernière polyligne de 0.075 J’ai voulu utiliser une action. Je me trouve face au problème suivant : la commande décaler n’accepte pas D (ou _last) pour sélectionnerle dernier objet créé. Le message explicit s’affiche : Attend un point ou Quitter. Auriez-vous une solution pour décaler le dernier objet crée ou sélectionné ? Auriez-vous une solution pour récupérer le point de la dernière polyligne sélectionnée ou créée ? Cordialement. Petit à petit on devient moins petit
vincentp010 Posté(e) le 16 octobre 2013 Posté(e) le 16 octobre 2013 Salut, en lisp pour le dernier objet créé(command "decaler" "0.075" (entlast) pause "q") Aide au téléchargement du cadastre dgfip-download-helper Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0 Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js
Tramber Posté(e) le 16 octobre 2013 Posté(e) le 16 octobre 2013 Pourquoi ne pas créer une macro de menu ?Ici, j'ai choisi le type de ligne "cache".^C^CDecaler;0.075;\\;chprop;d;;t;"cache";;pedit;d;e;0.13;;Decaler;0.075;\\; Ok, le dernier décalé doit être sélectionné. Un lisp serait plus adapté. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
stugeol Posté(e) le 16 octobre 2013 Auteur Posté(e) le 16 octobre 2013 Je vous remercie, en effet je suis en train de faire un lisp pour résoudre le problème.En cherchant sur le net j'ai trouvé un code que je suis en train d'adapter.Je poste le début d'une solution dans quelques temps. Cordialement. Petit à petit on devient moins petit
stugeol Posté(e) le 16 octobre 2013 Auteur Posté(e) le 16 octobre 2013 Voici une solution : ;; Merci à gille pour sa routine de base ;; Cette routines permet de dessinner une polyligne ;; cette polyligne est décalée d'une demi largeur de bnordure et d'une largeur de bordure ;; La polyligne centrale prend pour largeur lka largeur de la bordure moins 2 dixiéme de l'épaisseur de la bordure ;; Une largeur positif décale les ligne vers la droite, dans le sens de constgruction de la polyligne ;; Une largeur négative décale les ligne vers la gauche, dans le sens de constgruction de la polyligne ;; Stugeol (defun c:DrawBord (/ *error* special_offset largeur_bordure Layer_symb) (defun *error* (msg) (if (/= msg "Fonction annulée") (princ (strcat "\nErreur: " msg)) ) (if file (close file) ) (princ) ) (defun special_offset (pl largeur_bordure / o1 o2) (vl-load-com) (setq pl (vlax-ename->vla-object pl)) (setq o1 (car (vlax-invoke pl 'Offset (/ largeur_bordure 2.0)))) (command "_CHPROP" "_Last" "" "_Layer" Layer_Symb "") (command "_CHPROP" "_Last" "" "_Ltype" "Bylayer" "") (command "_PEDIT" "_Last" "LA" (- largeur_bordure (* 2 (/ largeur_bordure 10.0))) "") (setq o2 (car (vlax-invoke pl 'Offset largeur_bordure))) (command "_CHPROP" "_Last" "" "_Layer" Layer_Symb "") (command "_CHPROP" "_Last" "" "_Ltype" "continuous" "") ) (and (vl-cmdf "_.pline") (while (/= 0 (getvar "CMDACTIVE")) (vl-cmdf pause) ) (setq Layer_symb (getstring "Nom du calque de la symbologie :")) (setq largeur_bordure (getdist "\nLargeur de la bordure: ")) (special_offset (entlast) largeur_bordure) ) (princ) ) Je ne suis pas sur que le traitement des erreur que j'ai ajouté fonctionne. Je suis ouvert à toutes proposition d'améliorations. Bonne fin de journée à tous... Petit à petit on devient moins petit
philsogood Posté(e) le 16 octobre 2013 Posté(e) le 16 octobre 2013 marrant de voir le lisp de vincent et stugeol...c'est à se demander si ça fait la même chose!! ;)+1 pour vincentPhil PS : stugeol si j'étais toi je me pencherais sur le multiligne qui est à mon avis plus simple à utiliser (mais on ne peut pas y faire de jolis arrondis, certes!) Projeteur Revit Indépendant - traitement des eaux/CVC
stugeol Posté(e) le 16 octobre 2013 Auteur Posté(e) le 16 octobre 2013 bonjour philsogood, je ne connais pas le lisp de vincent as tu un lien? voici le liens de mes sources : http://forums.augi.com/showthread.php?70440-Automatic-offset-of-drawn-line Je viens de modifier un second code: (defun c:DecBord (/ ent o o1 o2 largeur_bordure Layer_symb) (or (vl-load-com)) (if (setq ent (entsel)) (progn (setq Layer_symb (getstring "Nom du calque de la symbologie :")) (setq largeur_bordure (getdist "\nLargeur de la bordure: ")) (setq o (vlax-ename->vla-object (car ent))) (setq o1 (vlax-invoke o 'Offset (/ largeur_bordure 2.0))) (command "_CHPROP" "_Last" "" "_Layer" Layer_Symb "") (command "_CHPROP" "_Last" "" "_Ltype" "Bylayer" "") (command "_PEDIT" "_Last" "LA" (abs (- largeur_bordure (* 2 (/ largeur_bordure 10.0)))) "") (setq o2 (vlax-invoke o 'Offset largeur_bordure)) (command "_CHPROP" "_Last" "" "_Layer" Layer_Symb "") (command "_CHPROP" "_Last" "" "_Ltype" "continuous" "") ) ) (princ) ) Dans ce code ci quel sont les modification à apporter pour sélectionner le coté du décalage des polylignes? Petit à petit on devient moins petit
stugeol Posté(e) le 17 octobre 2013 Auteur Posté(e) le 17 octobre 2013 Bon voilà pour finaliser j'ai trouvé un lisp de Gille qui permet d'afficher temporairement la direction d'une polyligne. En modifiant sommairement ce lisp et en l'intégrant j'obtient une fonction qui m'affiche le sens de la polyligne avant de saisir la largeur de la bordure. Une largeur positive décale vers la droite dans le sens de construction de la polyligne. Une largeur négative décale vers la gauche. Merci de votre aide.Cordialement. (defun c:DecBord (/ ent ent1 o o1 o2 largeur_bordure Layer_symb pt_decal) (or (vl-load-com)) (defun senspoly (selection / selection ent n pt pt0 pt1 ang dis) (vl-load-com) (setq dis (/ (getvar "viewsize") 50)) (repeat (setq n (fix (vlax-curve-getEndParam selection))) (setq pt (trans (vlax-curve-getPointAtParam selection (- n 0.5)) 0 1) pt0 (trans (vlax-curve-getPointAtParam selection n) 0 1) pt1 (trans (vlax-curve-getPointAtParam selection (1- n)) 0 1) ang (angle pt0 pt1) n (1- n) ) (grvecs (list 1 pt (polar pt (- ang (/ pi 6)) dis) 1 pt (polar pt (+ ang (/ pi 6)) dis) ) ) ) (princ) ) (if (setq ent (entsel)) (progn (setq ent1 (car ent)) (senspoly (car ent)) (setq Layer_symb (getstring "Nom du calque de la symbologie :")) (setq largeur_bordure (getdist "\nLargeur de la bordure: ")) (setq o (vlax-ename->vla-object (car ent))) (setq o1 (vlax-invoke o 'Offset (/ largeur_bordure 2.0))) (command "_CHPROP" "_Last" "" "_Layer" Layer_Symb "") (command "_CHPROP" "_Last" "" "_Ltype" "Bylayer" "") (command "_PEDIT" "_Last" "LA" (abs (- largeur_bordure (* 2 (/ largeur_bordure 10.0)))) "") (setq o2 (vlax-invoke o 'Offset largeur_bordure)) (command "_CHPROP" "_Last" "" "_Layer" Layer_Symb "") (command "_CHPROP" "_Last" "" "_Ltype" "continuous" "") ) ) (princ) ) Petit à petit on devient moins petit
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant