• Ce forum est la traduction générée par la machine de www.cad3d.it/forum1 - la communauté italienne du design. Plusieurs termes ne sont pas traduits correctement.

Échelle d'élévation de la pente

  • Auteur du sujet Auteur du sujet Cristallo
  • Date de début Date de début

Cristallo

Guest
1725272630397.pngJ'ai fait un aumônier : je dois obtenir un dtm brut, à partir de polylignes de courbes de niveau qui sont toutes à l'altitude z 0,00. Un par un je les ai amenés à l'altitude qu'ils auraient dû avoir, sauf pour réaliser que le design de départ était échelle 1:2000, tandis que mes élévations je les mets tous à 100.
À ce stade, je devrais évaluer toutes les élévations du rapport 100/2000.
J'ai écrit un livre ad hoc
Code:
(défun c: elevscale ()

(principal "\nselezionare polilinee:")
(setq entit (sget '(0 . " polyline")))

(numéro de setq (titre de longueur))

(setq scalaxy (getreal "\nscala di disegno lungo x-y: "))
(setq scalaz (getreal "\nscala di disegno lungo z: "))
(setq rapporto (/ scalaz scalaxy))

(compte de setq 0)

(numéro de répétition

(setq emod (nom entit))
(setq elev (asc '38 (enget emod)))
(setq action-elev (cdr (assoc '38)))
(setq new-elev (* acte-elev rapporto))
(setq el-nw (cons '38 new-elev))
(setq emodif (subst el-nw elev))
(setq modi (cdr))
(envoyé mod)
(nombre fixe (+ nombre 1)
);
); chiusura defun;
Tu devrais faire ce que je veux. Mais je ne peux pas le faire tourner. L'appel lancé va mal.
Y a-t-il un saint qui me dit où je me trompe ?
 
Je n'ai pas le temps de voir le lisp, mais je vous suggère une autre méthode.
crée un bloc de courbes. puis changer le facteur d'échelle du bloc z de 1 à 0,05. puis exploser le bloc
 
Je le pensais, mais si je ne sors pas, les couilles exploseraient. dans tous les cas, d'une très petite manière élégante (je dirais brutalement efficace), j'ai remplacé l'entroupé par un entmake de la nouvelle entité suivie d'un entdel de l'ancienne.
dans la pratique "copio" la ligne avec la nouvelle élévation calculée et éliminer celui dont il a dérivé.
 
Salut, je fixerais "directement" la nouvelle élévation avec setpropertyvalue:
Code:
(défun c:elevscale ()

(principal "\nselect polylines:")
(entités définies)

(numéro de setq (titre de longueur)

(setq scalaxy (Getreal "\nscale dessin long x-y: ")
(setq scalaz (végétaux)
(setq rapport (/ scalaz scalaxy)

(compte de setq 0)

(numéro de répétition)

(setq emod (nom entit)
(setq elev (getpropertyvalue emod "levation")
(setq new-elev (* rapport elev))
(setpropertyvalue emod "élévation" new-elev)
(nombre fixe (+ nombre 1))
); fermeture répétée
); arrêt de la fermeture
...que vous pourriez condenser un peu:
Code:
(défun c:elevscale ()

(principal "\nselect polylines:")
(entités définies)

(setq scalaxy (Getreal "\nscale dessin long x-y: ")
(setq scalaz (végétaux)
(setq rapport (/ scalaz scalaxy)

(répéter (compte de la longueur))
(setq emod (ssname entit (setq count (1- count)))
(setq elev (getpropertyvalue emod "levation")
(setq new-elev (* rapport elev))
(setpropertyvalue emod "élévation" new-elev)
)
)
 

Statistiques du forum

Sujets
58 521
Messages
499 056
Membres
104 110
Dernier membre
ChristianR

Membres en ligne

Aucun membre en ligne actuellement.
Retour
Haut