Aller au contenu

Méchantes polylignes


Messages recommandés

Posté(e)

Bonjour tout le monde,

 

j'ai deux soucis de polylignes qui à mon avis sont liés.

 

je travaille sur un dessin sur lequel plusieurs scu sont enregistrés. j'ai copié depuis ce dessin une polyligne ayant une épaisseur sur un autre dessin. Lorsque je change de scu sur ce nouveau dessin, la polyligne ne s'affiche plus comme un trait épais mais elle est évidée.

Pourtant fillmode est sur 1.

 

Deuxième point : sur ce même dessin, il a fallu que je tourne légèrement un scu par rapport à ce qui avait été dessiné. Il faut que je réaligne mes traits pour que mon dessin soit parrallèle à cette nouvelle orientation. Or, quand je clique sur une polyligne pour effectuer une rotation, les poignées d'accroche apparaissent comme tournées à 45 ° et lorsque je cherche à étirer la polyligne en question, elle ne suit pas le nouveau scu mais reste parallèle à un ancien scu (probablement celui dans lequel la polyligne avait été dessinée).

 

Comment faire pour que les polylignes de ce dessin ne gardent pas les propriétés du scu dans lequel elles ont été créées? Et comment faire pour que l'affichage de la polyligne épaisse soit correct?

 

Merci d'avance pour vos réponses.

N'étant peut être pas très claire dans l'explication, n'hésitez pas à me demander des compléments d'infos.

 

 

[Edité le 8/7/2011 par Mona]

Posté(e)

pour la polyligne évidée, je ne sais pas... est tu sur que c'est une polyligne avec épaisseur (voir dans ses propriétés et pas des hachures ''solid'' qui ne seraient pas venue au copier collé?..

 

pour les poignées qui restent orientées suivant le scg (scu géneral) ça me parait plus ou moins normal, par contre elle devraient suive le scu lors d'une édition avec le ortho bloqué... curieux...

 

quelle est la valeur de SNAPANG ? et de ucsfollow ?

Posté(e)

la polyligne ne s'affiche plus comme un trait épais mais elle est évidée

s'est peut etre parce que ta vue n'est pas parallèle au scu

 

Affichage/Point de vue 3D/Haut (ou dessus je n'ai que 2011 sous la main)

 

 

 

Comment faire pour que les polylignes de ce dessin ne gardent pas les propriétés du scu dans lequel elles ont été créées?

 

regarde si le scu dynamique n'est pas en route

 

UCSDETECT à 0

 

 

Posté(e)

Merci pour vos réponses,

 

L'épaisseur de la polyligne a bien été créée en modifiant le paramètre de largeur dans les propriétés de la polylignes.

 

Quant à SNAPANG = 0, UCSFOLLOW = 0 et UCSDETECT =0 également.

 

En ce qui concerne la vue qui serait non parallèle au scu, je travaille en 2D et créée le nouveau scu en fonction de 3 points pour lesquels les coordonnées Z sont égales à 0 donc normalement il ne devrait pas y avoir de problème.

Mais finalement après vérif et : affichage / point de vue 3D / haut il semble que la polyligne soit de nouveau pleine.

 

Par contre en ce qui concerne les polylignes qui s'étirent en fonction d'un scu antérieur c'est toujours le cas. D'ailleurs quand je veux tirer une poignée d'une telle polyligne, le scu se déplace sur la poignée que je souhaite étirer.

 

 

Posté(e)

Salut,

 

À ma connaissance un SCU ne sert qu'à l'utilisateur pour dessiner.

En aucun cas il n'est liée à une entité. La seule chose que certaines entités 2d ont comme propriété est un Système de Coordonnée Objet (SCO) déterminé par la direction d'extrusion (normale du plan). Toutes les polylignes dessinées avec des SCU ayant la même direction d'extrusion que le SCG (autrement dit dans des plans parallèles au plan du SCG) ont la même direction d'extrusion, donc le même SCO.

 

Les problèmes que tu décris (polylignes avec largeur qui ne s'affichent pas "remplies") viennent à mon avis du fait qu'elles ont été dessinées dans un SCU dont le plan n'était pas parallèle au SCG.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Mais finalement après vérif et : affichage / point de vue 3D / haut il semble que la polyligne soit de nouveau pleine.

 

Depuis la version 2008, il me semble, un simple petit MAJ+Molette fait un orbite 3D.

Si tu as une carte graphique qui tient la route, tu t'en aperçois meme pas.

du coup ta vue n'est plus tout a fait // au SCU ou SCG.

 

À ma connaissance un SCU ne sert qu'à l'utilisateur pour dessiner.

En aucun cas il n'est liée à une entité.

Sauf dans le cas du SCU dynamique, dont je n'ais pas encore compris l'utilité :casstet:

Posté(e)

les poignée d’accroche tournée à 45°, après vérif c'est bien louche... sauf comme le suggère fraid tu as un point de vue bizaroide...

à tout hazard quelle sont les valeurs de UCSXDIR et UCSYDIR ce serai super louche que ça ne soit pas les valeur par défaut)

 

l'icone du scu est elle affichée? fait nous une copie d'écran pour voir à quoi elle ressemble

 

essaye de passer en SCU Vue pour voir?

 

peu etre passe ucsfollow à 1, si ta vue tourne c'est que le pb est bien sur le point de vue qui ne correspond pas...

Posté(e)

Fraid,

À ma connaissance un SCU ne sert qu'à l'utilisateur pour dessiner.

En aucun cas il n'est liée à une entité.

Sauf dans le cas du SCU dynamique, dont je n'ais pas encore compris l'utilité :casstet:

 

Je ne comprends pas ce que tu veux dire, mis peut-être me suis-je mal exprimé.

Dans le cas d'une polyligne, par exemple (mais ça vaut pour les cercles, arcs, blocs, textes etc.), dans les données enregistrées avec l'entité (DXF), les coordonnées sont exprimées dans le Système de Coordonnée Objet.

Ce SCO peut être reconstitué à partir de la direction d'extrusion (code 210), son origine est toujours la même que l'origine du SCG (0,0,0) et ses axes sont déterminés à partir de l'axe Z (direction d'extrusion) et de "l'algorithme d'axes arbitraire" (voir l'aide aux développeurs Manuel d'utilisation DXF > Concepts DXF avancés > Algorithme d'axe arbitraire).

L'origine et les axes X et Y du SCO n'ont donc pas de lien direct avec ceux du SCU dans lequel a été créé la polyligne. Il n'est donc (dixit Autodesk) pas possible de déterminer le SCU dans lequel a été créé l'entité.

 

Prenons un exemple concret :

Si on ne travaille qu'en 2D en utilisant plusieurs SCU, tous ceux-ci sont (ou devraient être) coplanaires avec le SCG, seuls l'origine et/ou les axes X Y diffèrent l'axe Z (direction d'extrusion) est toujours 0,0,1.

Toutes les polylignes dessinées dans ces différents SCU ont la même direction d'extrusion (normale) donc le même SCO (et celui-ci est égal au SCG).

 

Mona,

D'ailleurs quand je veux tirer une poignée d'une telle polyligne, le scu se déplace sur la poignée que je souhaite étirer.

Ceci est caractéristique des polylignes dont le plan est différent du plan du SCU courant. C'est ce qui me fait dire que ton problème est un problème de co-planéarité : l'axe Z du SCU courant n'est pas (strictement) égal à la direction d'extrusion de la polyligne.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Re,

 

Puisque tu travailles en 2D, je te propose un LISP qui projette toutes les polylignes sur le plan XY du SCG.

 

(defun c:plflatten (/ *error* poly-pts lock ss)
 (vl-load-com)
 (or *acad* (setq *acad* (vlax-get-acad-object)))
 (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*)))
 (or *layers* (setq *layers* (vla-get-Layers *acdoc*)))

 (defun *error* (msg)
   (and msg
 (/= msg "Fonction annulée")
 (princ (strcat "Erreur: " msg))
   )
   (vla-EndundoMark *acdoc*)
   (princ)
 )

 (defun poly-pts (pl / n p l)
   (vl-load-com)
   (setq n (fix (vlax-curve-getEndParam pl)))
   (or (vlax-curve-IsClosed pl) (setq n (1+ n)))
   (while (setq p (vlax-curve-getPointAtParam pl (setq n (1- n))))
     (setq l (cons p l))
   )
 )

 (vla-StartUndoMark *acdoc*)
 (if (ssget "_X" '((0 . "LWPOLYLINE")))
   (progn
     (vlax-for	l *layers*
(if (= (vla-get-Lock l) :vlax-true)
  (progn
    (vla-put-Lock l :vlax-false)
    (setq lock (cons l lock))
  )
)
     )
     (vlax-for	pl (setq ss (vla-get-activeSelectionSet *acdoc*))
(if (not (equal (vlax-get pl 'Normal) '(0. 0. 1.)))
  (progn
    (vlax-put
      pl
      'Coordinates
      (apply 'append (mapcar '(lambda (p) (list (car p) (cadr p))) (poly-pts pl)))
    )
    (vlax-put pl 'Normal '(0. 0. 1.))
  )
)
(vla-put-Elevation pl 0.)
     )
     (vla-Delete ss)
     (foreach l lock (vla-put-Lock l :vlax-true))
   )
 )
 (*error* nil)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour,

 

Encore merci pour vos réponses.

Bonne nouvelle, le lisp marche et mes problèmes de polylignes avec "poignées tournées"ont disparu !!! Je suis vraiment contente.

Le problème venait bien du plan de la polyligne différent du scu. J'aimerai bien par contre comprendre pourquoi la direction d'extrusion des polylignes n'est pas égal à la direction du scu courant.

 

J'ai compris aussi pourquoi certaines polylignes avec épaisseur apparaissaient évidées, mais le lisp ne fait pas effet pour cela. Lorsque je créais un nouvel scu, j'utilisait la fonction 3 points, et lorsque je donnais les nouveaux axes, je me basais sur des lignes d'une référence externe ayant un point d'insertion en z différent de 0( sans que ce soit voulu). Lorsque j'ai remis le point d'insertion à 0 et recréé mon scu : plus de problèmes. Donc contrairement à ce que je pensais, même si le scu n'affiche pas d'axe Z, il peut quand même prendre en compte ce plan.

 

Bon c'est peut être dit de façon un peu naïve mais en apprenant sur le tas certaines notions ne sont pas évidentes !!

 

Encore merci.

 

PS : (Gile) , ne connaitrais tu pas par hasard un lisp qui permette de projeter tous les points d'un dessin sur le plan xy du SGC, comme tu le propose pour les polylignes. Ce serait vraiment pratique pour convertir en 2D des fichiers reçus type plan de géomètre comprenant énormément de points et d'objets en Z. Et ainsi limiter tous les problèmes d'accroche et d'intersection...

 

Posté(e)

 

Hello

 

Une petite compilation Perso de toutes les solutions

 

Le Decapode

 

 


;;
;; Super-simple little routine to force
;; all z-coordinates in a drawing to ZERO
;; (with thanks to Randy Richardson and the Autodesk NG's).
;;
;; From Tee Square Graphics - 01/28/2000
;;
;; --------------- Qq rappels par Patrice -------------------
;; ATTENTION : vous devez etre dans l'onglet Objet et 
;; TOUS les calques doivent etre DEVERROUILLES (en principe)
;; ----------------------------------------------------------
;;
;; --- Macro equivalente ---
;; ^C^C_move;_all;;0,0,0;0,0,1e99;_move;_p;;0,0,0;0,0,-1e99; 
;;
;; --- Commande Clavier equivalente ---
;; DEPLACER selectionner TOUT
;; 0,0,0
;; 0,0,1e99
;; DEPLACER selectionner TOUT
;; 0,0,0
;; 0,0,-1e99
;;

(defun C:SMASH ( )
 (command "_.move" "_all" "" '(0 0 1e99) ""
 "_.move" "_p" "" '(0 0 -1e99) "")
 (princ)
) 

;;
;; http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=16106#pid65145
;; ATTENTION : ce n'est pas suffisant pour les objets 3D Solid par exemple 
;; ou les blocs/symboles 3D (meme si ils reviennent au niveau ZERO ...)
;; voire meme aussi certains autres objets 3D
;; MAIS BON dans la plupart des cas, cette manipulation est SUFFISANTE 
;;
;; Si vous avez de la 3D, il faut en theorie faire ceci :
;; - exploser les blocs
;; - transformer les solides en solides 3D
;; - decomposer les solides 3D 2 fois
;; - faire un flatten option "non" sur les facettes
;; - "_move;_all;;0,0,0;0,0,1e99;;_move;_all;;0,0,0;0,0,-1e99;"  ou  SMASH.lsp
;; - overkill
;;
;; Voir aussi :
;; http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=16702#pid67159
;;
;; RAPPEL : ne pas oublier AUSSI la commande  APLANIRGEOM  depuis la version 2007 !
;;

 

 

Autodesk Expert Elite Team

Posté(e)

en passant...

 

ta technique pour définir ton nouveau scu comme tu l'a remarqué est sujette des erreurs si tu as un pts qui se balade en Z...

 

pour définir un nouveau scu et etre sur qu'il ne te jouera pas des tour de cochon, trace un petit bout de polyligne qui représente ton nouvel axe X et fait un scu objet... un polyligne que tu trace est toujours à plat dans ton espace de travail...

 

 

Posté(e)

Oui, merci pour l'info. C'est une habitude dont il faut que je me défasse (le scu 3 points)

Et merci beaucoup pour les solutions pour les aplatissages.

 

 

Posté(e)

lorsque je donnais les nouveaux axes, je me basais sur des lignes d'une référence externe ayant un point d'insertion en z différent de 0

 

Mettre la variable OSNAPZ à 1 pourrait régler tes soucis...

 

Pour la projection je te propose aussi my_project.lsp

 

Il ne traite que les objets curviligne, mais il est très rapide à la différence de flatten.

 

pour l'astuce

^C^C_move;_all;;0,0,0;0,0,1e99;_move;_p;;0,0,0;0,0,-1e99;

Si il y a des blocs dans ton dessin, je te recommande vivement la commande _AUDIT après avoir appliquer cette procédure, et de corriger les erreurs (elles concerne l'échelle d'insertion en Z des blocs, qui se retrouve à 0, ce qui rend ces bloc incohérents pour Autocad)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é