C3DMEMO - Tutorial para criar tabelas

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

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??

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!!