Aller au contenu

Sami2601

Membres
  • Compteur de contenus

    10
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Sami2601

  1. Sami2601

    Echelle de hachure

    Merci beaucoup @didier J'ai juste changé pour que ca sélectionne directement les hachures du calque voulu et ca marche parfaitement!
  2. Bonjour tout le monde, J'ai une fonction qui permet de changer les hachures d'un calque avec une échelle. (defun c:HatchReben () ; Set variables for layer name, new hatch pattern, hatch scales, and hatch color (setq layerName "01232 - Bodenbedeckung - Reben Füllfläche" newHatchPattern "GB_REBEN" hatchscales 0.25 hatchColor '(130 130 130)) ; RGB color (130, 130, 130) ; Check if the specified layer exists (if (tblsearch "LAYER" layerName) (progn ; Get information about the existing layer (setq oldLayer (tblsearch "LAYER" layerName)) (setq oldLayerColor (cdr (assoc 62 oldLayer))) (setq oldLayerLinetype (cdr (assoc 6 oldLayer))) (setq oldLayerLinetypescales (cdr (assoc 48 oldLayer))) ) ; Display a message if the layer is not found (prompt (strcat "\nLayer " layerName " not found.")) ) ; Select all hatches on the specified layer (setq ss (ssget "X" (list (cons 8 layerName) (cons 0 "HATCH")))) ; Check if hatches are found on the specified layer (if ss (progn (setq i 0) ; Loop through each selected hatch (while (< i (sslength ss)) ; Get the entity name of the hatch (setq hatchEntity (ssname ss i)) ; Get the layer of the hatch (setq hatchLayer (cdr (assoc 8 (entget hatchEntity)))) ; Check if the hatch is on the specified layer (if (= hatchLayer layerName) (progn ; Modify the hatch entity to change its pattern and scales (entmod (subst (cons 2 newHatchPattern) (assoc 2 (entget hatchEntity)) (entget hatchEntity))) (entmod (subst (cons 41 hatchscales) (assoc 41 (entget hatchEntity)) (entget hatchEntity))) ; Change hatch color to RGB (130, 130, 130) (entmod (subst (cons 62 hatchColor) (assoc 62 (entget hatchEntity)) (entget hatchEntity))) ; Restore original layer properties (entmod (subst (cons 6 oldLayerLinetype) (assoc 6 (entget hatchEntity)) (entget hatchEntity))) (entmod (subst (cons 48 oldLayerLinetypescales) (assoc 48 (entget hatchEntity)) (entget hatchEntity))) ) ) ; Move to the next hatch in the selection set (setq i (1+ i)) ) Le problème c'est que bien que l'échelle soit correcte quand on vérifie sur les propriétés de la hachure, mais visuellement elle ne l'est pas. Si on remodifie manuellement l'échelle en remettant la même valeur (sur cet exemple 0.25) dans les propriétés de la hachure sélectionnée, ca marche. Quelqu'un aurait il une idée sur la provenance de ce problème? Je vous remercie d'avance. Meilleures salutations.
  3. Bonjour, oui c'est parfait merci !!
  4. Bonjour 🙂 J'aurais besoin une nouvelle fois de votre aide. j'ai essayé de rajouter la possibilité de dessiner une Spline a partir des nouveaux sommet mais sans succès. Je vous remercie d'avance pour votre temps ! ; Didier Aveline ; https://www.da-code.fr/poly-07/ (defun da:DessPoly2D (listesommets z closed) ; dessin de polyligne 2D depuis liste de sommmets (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (if z (cons 38 z)) (cons 90 (length listesommets)) (if closed (cons 70 1) (cons 70 0)) ;;'(70 . 0) ) (mapcar '(lambda (p) (cons 10 p)) listesommets) ) ) ;_ Fin de entmake ) ; fin de defun da:DessPoly2D (defun da:DessPoly3D (ptlist closed / pt) ; dessin de polyligne 3D depuis liste de sommmets (entmake (list '(0 . "POLYLINE") '(100 . "AcDbEntity") '(100 . "AcDb3dPolyline") (if closed (cons 70 9) (cons 70 8)) ) ) (repeat (length ptlist) (setq pt (car ptlist) ptlist (cdr ptlist) ) (entmake (list '(0 . "VERTEX") '(100 . "AcDb3dPolylineVertex") (cons 10 pt) '(70 . 32) ) ) ) ;_ repeat (entmake '((0 . "SEQEND"))) ) ; fin de defun da:DessPoly3D (defun da:DessSpline (ptlist / pt) ; dessin de spline depuis liste de sommmets (entmake (list '(0 . "SPLINE") '(100 . "AcDbEntity") '(100 . "AcDbSpline") ) ) (repeat (length ptlist) (setq pt (car ptlist) ptlist (cdr ptlist) ) (entmake (list '(0 . "VERTEX") '(100 . "AcDbSplineVertex") (cons 10 pt) '(70 . 32) ) ) ) ;_ repeat (entmake '((0 . "SEQEND"))) ) ; fin de defun da:DessSpline ;Olivier Eckmann ;https://cadxp.com/topic/60969-routine-pour-créer-une-polyligne-à-partir-de-points-créés-avec-la-fonction-mesurer/ (defun C:Poly2Poly ( / dPas sTypePoly sSupprPoly oCurve oCurveDxf oCurveVla PTF dAbsc PT lsPts) (if (setq dPas (getreal "\nDistance entre les sommets:")) (progn (initget "2D 3D Spline") (setq sTypePoly (getkword "\nGénérer une polyligne [2D/3D/Spline] <3D>: ")) (if (not sTypePoly) (setq sTypePoly "3D") ) ;Choix de suppression de polyligne originale (initget "Oui Non") (setq sSupprPoly (getkword "\nSupprimer l'originale [Oui/Non] <Oui> : ")) (if (not sSupprPoly) (setq sSupprPoly "Oui") ) (while (and (setq oCurve (car (entsel "\nSélectionnez une polyligne ou une spline: "))) (setq oCurveDxf (entget oCurve)) (or (member (cdr (assoc 0 oCurveDxf)) '("POLYLINE" "LWPOLYLINE" "SPLINE")) (progn (princ "\nL'entité sélectionnée n'est ni une polyligne ni une spline. Veuillez sélectionner une polyligne ou une spline.") nil ) ) ) (setq oCurveVla (vlax-ename->vla-object oCurve)) (setq dLength (if (eq (cdr (assoc 0 oCurveDxf)) "SPLINE") (vlax-curve-getEndParam oCurveVla) (vla-get-Length oCurveVla) ) ) (setq bClosed (or (eq (vla-get-Closed oCurveVla) :vlax-true) (eq (cdr (assoc 0 oCurveDxf)) "CLOSED"))) (setq PTF (vlax-curve-getEndPoint oCurveVla)) (setq dAbsc 0.0 lsPts nil) (while (<= dAbsc dLength) (setq PT (vlax-curve-getPointAtDist oCurveVla dAbsc)) (setq lsPts (append lsPts (list PT))) (setq dAbsc (+ dAbsc dPas)) ) ; Add the last point if not already present at the end of the list (if (and (not bClosed) (> (distance (last lsPts) PTF) 0.001)) (setq lsPts (append lsPts (list PTF))) ) ; Draw the 2D or 3D polyline or spline (cond ((= sTypePoly "2D") (da:DessPoly2D lsPts (caddr (car lsPts)) bClosed)) ((= sTypePoly "3D") (da:DessPoly3D lsPts bClosed)) ((= sTypePoly "Spline") (da:DessSpline lsPts)) ) ; Delete the original curve if requested (if (= sSupprPoly "Oui") (entdel oCurve) ) ) ) ) )
  5. Merci à beaucoup à vous pour votre temps, c'est parfait !
  6. Bonjour Fraid, Je viens de voir ton message, hier j'ai fait la même chose, j'ai commenté ton code en cherchant sur internet, c'est bien pensé la méthode de les stocker sur un calque temporaire je galérais à trouver comment stocker seulement les points créés! Puis j'ai rajouté une ligne pour supprimer les points à la fin : ;; Supprime les points de la couche temporaire (command "_erase" pts "") ) ;; Affiche un message si la sélection de points a échoué (princ "\nAbandon, vérifiez la longueur des segments.") j'ai aussi essayé de rajouter la sélection d'une polyligne 3d avec "POLYLINE", et tracer une polyligne 3d avec : (vla-Add3Dpoly (vla-get-ModelSpace acdc) lpts) pour ne pas perdre le Z des sommets mais ca ne marche pas bien. Je ne sais pas s'il faut changer d'autre paramètres pour cela. Pour supprimer la polyligne original si ce n'est pas compliqué d'avoir la possibilité à la fin de choisir avec O/N ca serait super:)
  7. C'est parfait c'est exactement ce que je cherchais ! Merci beaucoup !
  8. Bonjour tous le monde, Désolé si je me suis mal exprimé. Ce que je fait c'est créer les points sur ma polyligne d'origine avec _Measure, puis j'utilise ces nouveaux points pour créer ma nouvelle polyligne comme sur l'image.
  9. Bonjour tout le monde, Je crée des points avec un intervalle de distance avec la fonction Mesurer sur ma polyligne, puis j'utilise ces points pour créer une nouvelle polyligne et ensuis je rajoute les poins de début et de fin de ma polyligne originale. J'essaie de créer une fonction en Lisp qui me permet d'automatiser ce processus, mais je n'ai pas beaucoup d'expérience en Lisp et je n'y arrive toujours pas pour l'instant. Je serais ravi si quelqu'un pouvait m'aider 🙂 Merci
×
×
  • 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é