Vou fazer um pequeno post hoje para mostrar como fazer tabela de locação usando o C3DMEMO.
Primeiro, baixe o programa e instale.
Depois, tenha um projeto qualquer, onde seu lote ou subdivisão tenha ao menos uma polilinha fechada.
Serve parcel no Civil 3D?
R: Claro!!!
Vamos usar o comando TABLECREATOR
A princípio vai parecer meio estranho no início, mas é bemmmmm simples, você vai ver, hehehehe
Para a coisa toda funcionar no AutoCAD puro, você precisará de uma polilinha fechada e dentro dela, insira um bloco com os atributos: NOME, NUMERO e DESCRICAO:
Coloque o polígono no layer LOTE por exemplo.
Seria interessante que, se os vértices precisarem ter nomes, coloque blocos com atributos PONTO e DESC por exemplo:
Ao chamar o programa, a primeira coisa que ele pergunta, é se será uma tabela no excel ou é pra desenhar no cad. Aqui escolha um, tanto faz!!!
Aí, vai aparecer uma tela para configurar algumas coisas:
Confuso?
Aí o programa está te perguntando:
Quais blocos eu uso para ler os nomes dos lotes, vértices e ruas?
Quais os layers das polilinhas dos lotes, quadras e ruas?
Simples, né?
Dica: pra primeira tentativa use o DWG de exemplo do programa chamado "/dwg/CADMEMO.DWG".
Aí vai aparecer a tela abaixo:
Preste bem atenção.
No quadro da esquerda, você escolhe os lotes ou quadras inteiras. No caso selecionei apenas um lote.
No quadro da direita, vamos formatar a tabela.
Primeiro, faça um duplo-clique na palavra "Loteamento", a célula que esta selecionada na imagem.
Depois, faça duplo clique na palavra "Polígono". Vai aparecer assim:
Perceba que, ao fazer o duplo clique, o nó se expande. Estamos interessados no nó "Loteamento / Polígonos / Segmentos", ok?
Esta coluna não aparecerá na tabela, ela só serve para dar "layout" à tabela.
Agora, vamos incluir 3 colunas: SEGMENTO, DISTANCIA, AZIMUTE
Para isso, clique o ícone indicado:
Ele insere colunas na nossa tabela.
Agora, faz duplo clique nos ícones com 3 pontinhos (...).
Abrirá uma caixa. Nela escreva o nome da coluna:
Simples, não?
Bem, faça isso para as três colunas. Vai se parecer com a imagem acima.
Agora, falta preencher a linha que escreve alguma coisa na tabela. Para isso, duplo clique no ícone marcado na célula:
Note que um segmento pode ser em arco ou pode ser uma reta e as propriedades podem variar conforme for um ou outro.
Então duplo clique no ícone da linha.
Este é o editor de macros. É nele que a coisa toda acontece.
a) clique na caixa marcada com (1)
b) escolha a propriedade "Vértice Inicial"
c) na caixa (2), no item "Mostrar", escolha "Nome"
d) clique o botão em (3)
e) observe o resultado em (4)
Bom, agora insira em (4) um caractere traço ("-") e repita a operação anterior, escolhendo o vértice final.
Ficará algo assim:
"[VerticeInicial:(MostraVertice:Nome|Caps:Minusculo)] - [VerticeFinal:(MostraVertice:Nome|Caps:Minusculo)]"
Isso produzirá um texto parecido com "1-2", "2-3", entendeu?
Agora clique o botão "OK" para fechar o editor.
Abre o editor para coluna da distância. Nela escolha a propriedade "Comprimento". A macro vai aparecer assim no final:
[Comprimento:(CaracSepDecimal:Virgula|CasasDecimais:3|Unidade:m|MostraUnidade:SimComEspaco|CaracSepMilhar:Ponto|FNumero:Numeral)]
Note que é a propriedade "Comprimento" com uma série de configurações.
Para o azimute, as propriedades serão assim:
Ou seja, o texto:
[InfoAngulo:(MostreGrau:GrauMinSec|Unidade:grau|Angulo:Azimute|Espacado:False|CaracSepDecimal:Virgula|CasasDecimais:3|CaracSepMilhar:Ponto|FNumero:Numeral)]
Percebe a relação?
Bom.... quem usa o civil 3d já deve ter percebido a semelhança com o "Label Style Composer".
Note que as linhas que não estão "ticadas" não produzirão nenhum texto, então não aparecerão na tabela final.
Você pode ignorar elas ou clicar o botão para apagar linhas para remover elas.
No fim, deverá ser algo assim:
No total, preenchi apenas 3 células no título e 3 células com valores. Rápido, não?
Olhe no canto superior esquerdo. Clique o Botão SALVAR.
Isso mesmo!! Você vai salvar o template de tabela!!!
Agora, clique o botão "OK" e veja o resultado no Excel, se esta foi sua opção inicial:
Suponha que agora você que a planilha no cad.
Chame o comando TABLECREATOR novamente.
Escolha a opção desenhar no cad.
Informe o ponto de inserção.
No canto superior esquerdo, clique o botão "ABRIR" o template salvo.
Clique o botão "OK"
Simples né?
Sim, podem acontecer bugs. Se você achar algum, me avisa o quanto antes!!!
Aquele descontão pra ti comprar a licença!!!
C3DMEMO - Promoção ganhe uma licença
Gente, preciso de ajuda.
Para publicar o C3DMEMO na loja da Autodesk, é preciso um ícone e o atual não se enquadra.
Pra quem não sabe, o C3DMEMO é um plugin para criação de memoriais descritivos de lotes e parcelamentos, que roda dentro do AutoCAD ou do Civil 3D.
Por isso estou lançando a promoção: Uma licença do programa para o melhor ícone!!!
Pra concorrer é simples, crie uma imagem de 80x80 pixels (pode ser maior, mas deve ser quadrado, pois será redimensionado para este tamanho) que represente o programa, no formato PNG ou JPG.
Envie para o meu email (neyton@yahoo.com).
As imagens podem ser enviadas até 30-11-2014
Em seguida, ficarão expostas aqui no blog para votação até o dia 15-12-2014
O prêmio será uma licença do programa para a imagem com mais votos!!
Ele está disponível para download aqui
Para publicar o C3DMEMO na loja da Autodesk, é preciso um ícone e o atual não se enquadra.
Pra quem não sabe, o C3DMEMO é um plugin para criação de memoriais descritivos de lotes e parcelamentos, que roda dentro do AutoCAD ou do Civil 3D.
Por isso estou lançando a promoção: Uma licença do programa para o melhor ícone!!!
Pra concorrer é simples, crie uma imagem de 80x80 pixels (pode ser maior, mas deve ser quadrado, pois será redimensionado para este tamanho) que represente o programa, no formato PNG ou JPG.
Envie para o meu email (neyton@yahoo.com).
As imagens podem ser enviadas até 30-11-2014
Em seguida, ficarão expostas aqui no blog para votação até o dia 15-12-2014
O prêmio será uma licença do programa para a imagem com mais votos!!
Ele está disponível para download aqui
Autolisp - UTM para LatLon e viceversa
Bom, hoje vou voltar um pouco às origens do blog!!!
Um pouco de autolisp pra relembrar os velhos tempos de programação em POG!!!
A lisp abaixo na verdade são algumas subrotinas para conversão de coordenadas geográficas em UTM e viceversa.
É bem fácil de usar se você souber o que é UTM e coordenada geográfica e está familiarizado com Georeferenciamento.
Muitas pessoas me perguntam se eu tenho uma rotina pra converter e.... Bem, tenho!!
Está aí!!
;| Conversão de UTM para GEOGRAFICA
baseado em http://recursos.gabrielortiz.com/index.asp?Info=058a
metodo: Coticchia-Surace
ay: coorenada do semi eixo maior (m)
bx: coorenada do semi eixo menor (m)
pt: (cord_X coord_Y coord_Z)
fuso: fuso, inteiro
hmsf: hemisferio, "N" para norte e "S" para sul
se for conhecido f, temos: bx=(1-f)*ay
sad69 -> ay = 6.378.160,000m e f = 1/298,25
corrego alegre -> ay = 6.378.388,000m e f = 1/297,00
(utm2geo (GETPOINT) 6378160.0 298.25 22 "S") => 25º25'51"15216 49º17'02"51881
|;
(defun utm2geo (pt ay f fuso hmsf / tmp e el el² c alpha lo phil nu A1 A2 J2 J4 re
J6 beta gama Bo zeta xi eta sinhxi dl tau lat lon x y x1 y1 fe bx)
(setq ay (float ay)
bx (* ay (- 1 (/ 1.0 f)))
x (car pt)
y (cadr pt)
re 6366197.724 ;raio da terra
fe 0.9996 ;fator de escala
tmp (sqrt (- (expt ay 2) (expt bx 2)))
e (/ tmp ay) ;excentricidade
el (/ tmp bx) ;2ª excentricidade
el² (expt el 2)
c (/ (expt ay 2) bx);raio polar de curvatura
x1 (- x 500000.0)
y1 (if (or (= hmsf 'N) (= hmsf "N")) y (- y 10000000.0))
phil (/ y1 (* re fe))
lo (- (* 6 fuso) 183)
nu (/ (* c fe) (sqrt (1+ (* el² (expt (cos phil) 2)))))
a (/ x1 nu)
A1 (sin (* 2 phil))
A2 (* A1 (expt (cos phil) 2))
J2 (+ phil (/ A1 2.0))
J4 (/ (+ (* J2 3.0) A2) 4.0)
J6 (/ (+ (* 5.0 J4) (* A2 (expt (cos phil) 2))) 3.0)
alpha (/ (* 3.0 el²) 4.0)
beta (* (/ 5.0 3.0) (expt alpha 2))
gama (* (/ 35.0 27.0) (expt alpha 3))
Bo (* fe c (+ phil (* (- alpha) J2) (* beta J4) (* (- gama) J6)))
b (/ (- y1 Bo) nu)
zeta (* (/ (* el² (expt a 2)) 2.0) (expt (cos phil) 2))
xi (* a (- 1.0 (/ zeta 3.0)))
eta (+ (* b (- 1.0 zeta)) phil)
sinhxi (/ (- (exp xi) (exp (- xi))) 2.0)
dl (atan (/ sinhxi (cos eta)))
tau (atan (* (cos dl) (tan eta)))
lon (+ (* (/ 180.0 pi) dl) lo)
lat (* (/ 180.0 pi)
(+ phil (* (+ 1.0
(* el² (expt (cos phil) 2.0))
(* (/ -3.0 2.0) el² (sin phil) (cos phil) (- tau phil)))
(- tau phil)))))
(if (caddr pt)
(list lon lat (caddr pt))
(list lon lat 0.0)))
;pt -> long lat
;a -> semi eixo maior
;f -> achatamento
(defun geo2utm (pt a f / b e el el² c lamb fi fuso lo deltal Am eps n v
S A1 A2 J2 J4 J6 alfa beta gama bo)
(setq a (float a)
b (- a (/ a f))
el (/ (sqrt (- (expt a 2) (expt b 2))) b)
el² (expt el 2)
c (/ (expt a 2) b)
fuso (fix (+ (/ (car pt) 6.0) 31))
lamb (/ (* (car pt) pi) 180.0)
fi (/ (* (cadr pt) pi) 180.0)
lo (- (* fuso 6) 183) ;meridiano central
deltal (- lamb (/ (* lo pi) 180.0))
Am (* (cos fi) (sin deltal))
eps (* 0.5 (log (/ (+ 1 Am) (- 1 Am))))
n (- (atan (/ (tan fi) (cos deltal))) fi)
v (/ (* c 0.9996) (sqrt (+ 1 (* el² (expt (cos fi) 2)))))
S (/ (expt (* el eps (cos fi)) 2) 2.0)
A1 (sin (* 2.0 fi))
A2 (* A1 (expt (cos fi) 2.0))
J2 (+ fi (/ A1 2.0))
J4 (/ (+ (* 3.0 J2) A2) 4.0)
J6 (/ (+ (* 5 J4) (* A2 (expt (cos fi) 2))) 3.0)
alfa (/ (* 3.0 el²) 4.0)
beta (* (/ 5.0 3.0) (expt alfa 2))
gama (* (/ 35.0 27.0) (expt alfa 3))
bo (* 0.9996 c (+ fi (* (- alfa) J2) (* beta J4) (* (- gama) J6))))
(list (+ 500000.0 (* eps v (1+ (/ S 3.0)))) ;x
(+ bo (* n v (1+ S)) (if (< lat 0.0) 10000000.0 0.0));y
(caddr pt)
))
(defun LLA_wgs84->sad69 (pt)
(geo2geo pt 6378137.0 298.257223563 6378160.0 298.25 66.87 -4.37 38.52))
(defun LLA_sad69->wgs84 (pt)
(geo2geo pt 6378160.0 298.25 6378137.0 298.257223563 -66.87 4.37 -38.52))
(defun geo2geo (pt ;long_from lat_from h_from ;coordenadas geodesicas de origem
a_from f_from ;parametros geodesicos de origem
a_to f_to ;parametros geodesicos de destino
dx dy dz ;translação origem->destino
/ lat1 long1 f1 f2 a1 a2 e²1 e²2 N1 N2 Xw Yw Zw b2 p teta fi lamb hb ep²)
(setq lat1 (/ (* (cadr pt) pi) 180.0)
long1 (/ (* (car pt) pi) 180.0)
f1 (/ 1.0 f_from) ;wgs
a1 a_from ;wgs
e²1 (* f1 (- 2.0 f1))
N1 (/ a1 (sqrt (- 1.0 (* e²1 (expt (sin lat1) 2.0)))))
;coord carteziana no sistema de origem:
Xw (* (+ N1 (caddr pt)) (cos lat1) (cos long1))
Yw (* (+ N1 (caddr pt)) (cos lat1) (sin long1))
Zw (* (+ (* N1 (- 1.0 e²1)) (caddr pt)) (sin lat1))
;coord carteziana do ponto no novo sistema:
Xb (+ Xw dx)
Yb (+ Yw dy)
Zb (+ Zw dz)
;converter carteziana para geodesica:
f2 (/ 1.0 f_to)
a2 a_to
e²2 (* f2 (- 2.0 f2))
b2 (* a2 (- 1.0 f2))
p (sqrt (+ (expt Xb 2) (expt Yb 2)))
teta (atan (/ (* Zb a2) (* p b2)))
ep² (/ (- (expt a2 2.0) (expt b2 2.0)) (expt b2 2.0))
fi (atan (/ (+ Zb (* ep² b2 (expt (sin teta) 3.0))) (- p (* e²2 a2 (expt (cos teta) 3.0)))))
lamb (atan (/ Yb Xb))
N2 (/ a2 (sqrt (- 1.0 (* e²2 (expt (sin fi) 2.0)))))
hb (- (/ p (cos fi)) N2))
(list (/ (* 180.0 lamb) pi);long
(/ (* 180.0 fi) pi) ;lat
hb) ;altitude
)
Link(s) da(s) subrotina(s) usada(s): tan
A dificuldade nem está nos cálculos em si, mas na sintaxe das fórmulas, não acham??
;| Conversão de UTM para GEOGRAFICA
baseado em http://recursos.gabrielortiz.com/index.asp?Info=058a
metodo: Coticchia-Surace
ay: coorenada do semi eixo maior (m)
bx: coorenada do semi eixo menor (m)
pt: (cord_X coord_Y coord_Z)
fuso: fuso, inteiro
hmsf: hemisferio, "N" para norte e "S" para sul
se for conhecido f, temos: bx=(1-f)*ay
sad69 -> ay = 6.378.160,000m e f = 1/298,25
corrego alegre -> ay = 6.378.388,000m e f = 1/297,00
(utm2geo (GETPOINT) 6378160.0 298.25 22 "S") => 25º25'51"15216 49º17'02"51881
|;
(defun utm2geo (pt ay f fuso hmsf / tmp e el el² c alpha lo phil nu A1 A2 J2 J4 re
J6 beta gama Bo zeta xi eta sinhxi dl tau lat lon x y x1 y1 fe bx)
(setq ay (float ay)
bx (* ay (- 1 (/ 1.0 f)))
x (car pt)
y (cadr pt)
re 6366197.724 ;raio da terra
fe 0.9996 ;fator de escala
tmp (sqrt (- (expt ay 2) (expt bx 2)))
e (/ tmp ay) ;excentricidade
el (/ tmp bx) ;2ª excentricidade
el² (expt el 2)
c (/ (expt ay 2) bx);raio polar de curvatura
x1 (- x 500000.0)
y1 (if (or (= hmsf 'N) (= hmsf "N")) y (- y 10000000.0))
phil (/ y1 (* re fe))
lo (- (* 6 fuso) 183)
nu (/ (* c fe) (sqrt (1+ (* el² (expt (cos phil) 2)))))
a (/ x1 nu)
A1 (sin (* 2 phil))
A2 (* A1 (expt (cos phil) 2))
J2 (+ phil (/ A1 2.0))
J4 (/ (+ (* J2 3.0) A2) 4.0)
J6 (/ (+ (* 5.0 J4) (* A2 (expt (cos phil) 2))) 3.0)
alpha (/ (* 3.0 el²) 4.0)
beta (* (/ 5.0 3.0) (expt alpha 2))
gama (* (/ 35.0 27.0) (expt alpha 3))
Bo (* fe c (+ phil (* (- alpha) J2) (* beta J4) (* (- gama) J6)))
b (/ (- y1 Bo) nu)
zeta (* (/ (* el² (expt a 2)) 2.0) (expt (cos phil) 2))
xi (* a (- 1.0 (/ zeta 3.0)))
eta (+ (* b (- 1.0 zeta)) phil)
sinhxi (/ (- (exp xi) (exp (- xi))) 2.0)
dl (atan (/ sinhxi (cos eta)))
tau (atan (* (cos dl) (tan eta)))
lon (+ (* (/ 180.0 pi) dl) lo)
lat (* (/ 180.0 pi)
(+ phil (* (+ 1.0
(* el² (expt (cos phil) 2.0))
(* (/ -3.0 2.0) el² (sin phil) (cos phil) (- tau phil)))
(- tau phil)))))
(if (caddr pt)
(list lon lat (caddr pt))
(list lon lat 0.0)))
;pt -> long lat
;a -> semi eixo maior
;f -> achatamento
(defun geo2utm (pt a f / b e el el² c lamb fi fuso lo deltal Am eps n v
S A1 A2 J2 J4 J6 alfa beta gama bo)
(setq a (float a)
b (- a (/ a f))
el (/ (sqrt (- (expt a 2) (expt b 2))) b)
el² (expt el 2)
c (/ (expt a 2) b)
fuso (fix (+ (/ (car pt) 6.0) 31))
lamb (/ (* (car pt) pi) 180.0)
fi (/ (* (cadr pt) pi) 180.0)
lo (- (* fuso 6) 183) ;meridiano central
deltal (- lamb (/ (* lo pi) 180.0))
Am (* (cos fi) (sin deltal))
eps (* 0.5 (log (/ (+ 1 Am) (- 1 Am))))
n (- (atan (/ (tan fi) (cos deltal))) fi)
v (/ (* c 0.9996) (sqrt (+ 1 (* el² (expt (cos fi) 2)))))
S (/ (expt (* el eps (cos fi)) 2) 2.0)
A1 (sin (* 2.0 fi))
A2 (* A1 (expt (cos fi) 2.0))
J2 (+ fi (/ A1 2.0))
J4 (/ (+ (* 3.0 J2) A2) 4.0)
J6 (/ (+ (* 5 J4) (* A2 (expt (cos fi) 2))) 3.0)
alfa (/ (* 3.0 el²) 4.0)
beta (* (/ 5.0 3.0) (expt alfa 2))
gama (* (/ 35.0 27.0) (expt alfa 3))
bo (* 0.9996 c (+ fi (* (- alfa) J2) (* beta J4) (* (- gama) J6))))
(list (+ 500000.0 (* eps v (1+ (/ S 3.0)))) ;x
(+ bo (* n v (1+ S)) (if (< lat 0.0) 10000000.0 0.0));y
(caddr pt)
))
(defun LLA_wgs84->sad69 (pt)
(geo2geo pt 6378137.0 298.257223563 6378160.0 298.25 66.87 -4.37 38.52))
(defun LLA_sad69->wgs84 (pt)
(geo2geo pt 6378160.0 298.25 6378137.0 298.257223563 -66.87 4.37 -38.52))
(defun geo2geo (pt ;long_from lat_from h_from ;coordenadas geodesicas de origem
a_from f_from ;parametros geodesicos de origem
a_to f_to ;parametros geodesicos de destino
dx dy dz ;translação origem->destino
/ lat1 long1 f1 f2 a1 a2 e²1 e²2 N1 N2 Xw Yw Zw b2 p teta fi lamb hb ep²)
(setq lat1 (/ (* (cadr pt) pi) 180.0)
long1 (/ (* (car pt) pi) 180.0)
f1 (/ 1.0 f_from) ;wgs
a1 a_from ;wgs
e²1 (* f1 (- 2.0 f1))
N1 (/ a1 (sqrt (- 1.0 (* e²1 (expt (sin lat1) 2.0)))))
;coord carteziana no sistema de origem:
Xw (* (+ N1 (caddr pt)) (cos lat1) (cos long1))
Yw (* (+ N1 (caddr pt)) (cos lat1) (sin long1))
Zw (* (+ (* N1 (- 1.0 e²1)) (caddr pt)) (sin lat1))
;coord carteziana do ponto no novo sistema:
Xb (+ Xw dx)
Yb (+ Yw dy)
Zb (+ Zw dz)
;converter carteziana para geodesica:
f2 (/ 1.0 f_to)
a2 a_to
e²2 (* f2 (- 2.0 f2))
b2 (* a2 (- 1.0 f2))
p (sqrt (+ (expt Xb 2) (expt Yb 2)))
teta (atan (/ (* Zb a2) (* p b2)))
ep² (/ (- (expt a2 2.0) (expt b2 2.0)) (expt b2 2.0))
fi (atan (/ (+ Zb (* ep² b2 (expt (sin teta) 3.0))) (- p (* e²2 a2 (expt (cos teta) 3.0)))))
lamb (atan (/ Yb Xb))
N2 (/ a2 (sqrt (- 1.0 (* e²2 (expt (sin fi) 2.0)))))
hb (- (/ p (cos fi)) N2))
(list (/ (* 180.0 lamb) pi);long
(/ (* 180.0 fi) pi) ;lat
hb) ;altitude
)
Link(s) da(s) subrotina(s) usada(s): tan
A dificuldade nem está nos cálculos em si, mas na sintaxe das fórmulas, não acham??
Civil 3D - Livro
Olá pessoal, este post é para agradecer ao Marcus Cardoso, por me enviar uma cópia do seu livro:
Valeu Marcus, o livro é excelente!!! E já está ajudando!!
Assinar:
Postagens (Atom)