Cotar curvas de nivel

Você ainda não usa o civil 3d? ok, tudo bem, hehehe
E quando você quer cotar curvas de nível, como você faz? Usa o comando "text"?
aff... que tal agilizar isso um pouco?
Só pra exercitar um pouco:
mais...
(setq dc1:altura 1.0
      dc1:estilo "ARIAL"
      dc1:alin "mc"
      dc1:layer "S-CURVA_TXT")

(
defun c:dc1 (/ tmp pt rot lst pt)
  (
tbn:error-init  nil)
  (
if (progn
      (initget  0 "S N")
      (
= "S" (getkword "\nQuer formatar o texto antes? <Sim, Não> [Não]")))
    (
setq tmp (getreal (strcat "\nQual a altua do texto? <" (rtos dc1:altura) ">"))
      dc1:altura (if tmp tmp dc1:altura)
          

      tmp (getstring (strcat "\nQual o estilo do texto? <" dc1:estilo ">") t)
      dc1:estilo  (if (= tmp "") dc1:estilo tmp )
          

      tmp (initget 0 "L C R A M F TL TC TR ML MC MR BL BC BR")
      tmp (getkword (strcat "\nAplicar o alinhamneto [L,C,R,A,M,F,TL,TC,TR,ML,MC,MR,BL,BC,BR] <" dc1:alin ">"))
      dc1:alin (if tmp tmp dc1:alin)
          

      tmp (getstring (strcat "\nQual o layer do texto? <" dc1:layer ">") t)
      dc1:layer (if (= "" tmp) dc1:layer tmp)))
  
  (
while (progn (if lst (initget 128 "U"))
       (
if (setq tmp (entsel (strcat "\nClique a linha no ponto onde a cota deve aparecer" (if lst " [Undo]" ""))))
             t
             (= 7 (getvar "errno"))))
    (
if (null tmp)
      (
prompt "\nOps!")
      (
if  (listp tmp)
        (
if (member (dxf 0 (car tmp)) '("LINE""POLYLINE""LWPOLYLINE""SPLINE"))
          (
setq pt (trans (cadr tmp) 1 0)
                pt (vlax-curve-getClosestPointTo (car tmp) pt)
                tmp (draw-text (itoa (fix (arred (caddr pt) 0)))
                      pt
                      dc1:layer

                      (rot-of-ucs (get-tan-of-pt (car tmp) pt))
                      dc1:altura
                      dc1:estilo
                      dc1:alin
)
                lst (cons tmp lst))
          (
prompt "\nEste elemento é inválido..."))
        (
if (= tmp "U") (progn (del-ent (car lst)) (setq lst (cdr lst)))))))
  (
tbn:error-restore))


(defun arred (num dec /)
  (
atof (rtos num 2 dec)))
(
defun rot-of-ucs (rot / rucs)
  (
setq rucs (angle '(0 0) ;ucs
         (trans
           (polar (trans '(0 0) 1 0) rot 1) ;vetor wcs
           0 1 ;WCS -> UCS
           )))
  (
if (and (>= rucs (/ pi 2)) (< rucs (* 3 (/ pi 2))))
    (
+ rot pi)
    rot))


Link(s) da(s) subrotina(s) usada(s):
tbn:error-init, dxf, draw-text, arred, rot-of-ucs, get-tan-of-pt, del-ent, tbn:error-restore

Pra usar é simples, tenhas as curvas de nível, claro, em 3d, senão nem adianta
e carrega esta lisp (e as demais dos com os links) e use, é bem simples!!

Tem preguiça de baixar cada lispezinha?, pegue logo o programa compilado, é só baixar e usar!!

LinkWithin

Related Posts Plugin for WordPress, Blogger...