No forum autolisp, postei esta rotinazinha:
(defun c:est (/ ss dist ent comp compt
pt1 pt2 lay offset ang angp)
(tbn:error-init (list (list "cmdecho" 0) T))
(vl-load-com)
(prompt "\nSelecione os objetos...\n")
(setq ss (ssget '( (0 . "*LINE,~MLINE;ARC")))
dist (getdist "Distância entre os pontos <20>:\n")
offset (getdist "\nEntre com o tamanho da marca <1>")
offset (if offset offset 1)
dist (if dist dist 20)
lay (getstring "qual o nome do layer? <0>" t)
lay (if (/= lay "") lay "0")
)
(repeat (if ss (sslength ss) 0)
(setq ent (ssname ss 0)
compt(vlax-curve-getDistAtParam ent
(vlax-curve-getEndParam ent))
pts nil
comp 0)
(ssdel ent ss)
(while (<= comp compt)
(setq pt1 (vlax-curve-getPointAtDist ent comp)
ang (vlax-curve-getfirstderiv ent
(vlax-curve-getparamatdist ent comp))
ang (angle '(0 0) ang)
angp (+ ang (/ pi 2))
pt2 (polar pt1 angp offset))
(entmake (list '(0 . "LINE")
(cons 8 lay)
(cons 10 pt1)
(cons 11 pt2)))
(entmake (list '(0 . "TEXT")
(cons 8 lay)
'(10 0 0 0)
(cons 40 offset)
(cons 1 (rtos comp 2 2))
(cons 50 ang)
'(72 . 1)
(cons 11 pt2)
'(73 . 1)))
(setq comp (if (and (< comp compt)
(> (+ comp dist) compt))
compt
(+ comp dist)))))
(tbn:error-restore ))
Ela desenha linhas e textos marcando a extensão percorrida em uma linha qualquer... tipo um estaqueamento, saca?
o Civil 3d faz isso muito melhor, claro, mas fica um exemplo... próximos passos: aplicar reactors às entidades para que, ao alterar a linha do eixo, as escatas mudem de lugar e marcar pontos notaveis, tipo, tangencia, curva...
Ola Neyton, gostaria de saber se vc sabe como modificar o estaqueamento do civil... para o padrão q utilizamos no brasil... estacas de 20 em 20 metros numeradas por eixos?
ResponderExcluiraté onde eu sei, só é possível determinar a distância entre as estacas, isto é, fazê-lo marcar de 20 em 20 metros... já fazê-lo numerar 1+19.20 por exemplo.... não consegui...
ResponderExcluirpara nós isto significaria 39.20m ( com estaqueamento de 20 em 20 ) e para o civil 3d isso significa 119.20 metros..., percebe o que eu quero dizer?
olha só... é possível sim...
ResponderExcluiré só buscar nos tutoriais que tem...