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:
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!!
baixe o programa já compilado e use. é mais fácil
copiei tudo isso ai coloquei num txt depois salvei como .lsp e dei load no autocad, carrega porem nao sei os comandos me expliquem como usar isso estou precisando muito pois o software q uso nao quer cotar as polylines aqui.
como é que isso funciona?
Fera ta dando o seguinte erro…
Error: no function definition: vlax-curve-getClosestPointTo
não sei o q significa,….
Vlw, funcionou..
Abrcs
coloque um
(vl-load-com)
no inicio do programa que funciona
Nao Consigo achar a sub-rotina: VLAX-CURVE-CLOSESTPOINTTO
que pede depois de selecionar a curva..
estes links não funcionam porque as subrotinas ja estão inseridas no programa…
minha duvida é: eu salver os arquivos mas durante a execução eu tive o seguinte erro:
Clique a linha no ponto onde a cota deve aparecer
Error: no function definition: ENAME-OF
(não sei o que isso significa…)
estas sub-rotinas não tem link porque elas ja estão inseridas no texto da rotina principal…
apos criar um arquivo .lsp com as rotinas citadas, eu tentei rodar a lisp e obtive o seguinte bug:
Clique a linha no ponto onde a cota deve aparecer
Error: no function definition: ENAME-OF
o que será isso?
desculpe neyton… não vi que as sub-rotinas tinham sub-sub-rotinas… desatenção minha!
foi mal!
“arred”
“rot-of-ucs”
o link pra essas sub-rotinas não estão funcionando…
e buscando pelo site não encontrei o post de referência…