Licenças offline
Bom dia pessoal!!
Hoje vou postar um pequeno tutorial de como fazer para usar os meus programas offline.
Agora, por que usar offline?
Bom, se você estiver no meio do mato, por exemplo.... Ou estiver em São Luis - MA, onde a internet é, bem, a internet de São Luis....
O procedimento é simples. Mas alguns cuidados devem ser tomados:
Primeiro, leia a ajuda do programa, seja dos pacotes (que estão em promoção!!!) seja do gerenciador de licenças, TBN2NET.UTILS.EXE.
Agora, que você já leu a ajuda, vamos resumir:
Abra o gerenciador de licenças. O o executável que está na pasta do programa:
Este programa está presente nos seguintes pacotes de programa:
C3DRENESG4, para dimensionamento de redes de drenagem e esgoto urbanos
TBN2C3D, coleção de plugins para o Civil 3D
TBN2CAD, coleção de plugins para AutoCAD
C3DMEMO, para criar memoriais descritivos e tabelas de loteamentos
DDM, para cálculo de distribuição de terraplenagem
No exemplo, estou usando o TBN2C3D.
Clique o executável para que ele abra e veja em sua tela a coluna "Exportar":
Nesta coluna, clique para MARCAR a licença do programa.
Note que cada plugin tem seu próprio número de licença. Nesta tela você poderá ver o drive (C:/, D:/...) associado à licença o qual está servindo de hardlock da mesma.
Após "ticar" o item, aparece esta tela:
Note que a coluna Versão será preenchida com os números das versões do AutoCAD em que sua licença será válida, Use esta tabela para referência:
Release | Versão |
---|---|
16.0 | 2000 |
16.1 | 2002 |
16.2 | 2004 |
16.3 | 2005 |
16.4 | 2006 |
17.0 | 2007 |
17.1 | 2008 |
17.2 | 2009 |
18.0 | 2010 |
18.1 | 2011 |
18.2 | 2012 |
19.0 | 2013 |
19.1 | 2014 |
20.0 | 2015 |
20.1 | 2016 |
21.0 | 2017 |
Perceba que a coluna "Número de Série" é preenchida com o número de série do drive (C:/, D:/...) de onde o programa está instalado.
Ao emprestar a licença, ela deixa de ser validada no servidor e passa a ser validada OFFLINE, por um prazo de até 60 dias.
Ao validar, o programa verifica se o prazo ainda não encerrou, se o número de série do drive onde o programa está corresponde o número de série de quando você emprestou a licença, se a versão usada do AutoCAD (veja a tabela acima) está na lista de versões habilitadas.
Caso a verificação offline falhar, o programa irá tentar validar no servidor e este fará as mesmas verificações, porém, se o prazo em que a licença está emprestada ainda não terminou, você receberá uma mensagem de erro, informando que a licença está emprestada e não pode ser validada.
Posso dar "N" motivos para isso ser assim.... Tem muito "espertinho" no mundo...
Em fim.. Após certificar que a licença está emprestada, Clique o botão "Exportar Licenças":
Será pedido o nome do arquivo a ser salvo:
Você pode salvar esse arquivo na mesma pasta do programa, até sugiro que faça isso. Porque exportar:
As informações das licenças dos plugins são salvas no registro do Windows:
Agora imagine a situação: Você associou as suas licenças a um PENDRIVE, para poder usar em mais de um computador.
E agora, EMPRESTOU a licença e a licença está armazenada no Registro do Windows do computador de onde fez este procedimento.
E possivelmente está usando agora o plugin num computador DIFERENTE.
Vai acontecer que neste outro computador, não há informações de licenças, muito menos de licenças emprestadas então o programa irá tentar validar a licença ONLINE.
Mesmo que você saiba qual é o seu número de licença e informe ao programa, poderá receber uma mensagem de erro dizendo que a licença está EMPRESTADA E NÃO PODE SER VALIDADA.
Percebe o por quê desse erro?
Não?
Você emprestou a licença no computador "A" e as informações dela estão SOMENTE em "A". Agora, tenta usar o plugin no computador "B", que não sabe nada sobre as licenças, então dá o erro. Você informa o número, mas a informação de que a licença está emprestada ficou em "A" então aparece o erro de licença emprestada e não valida.
Como resolve isso?
Volte ao computador "A" e abra o "tbn2net.utils.exe", o gerenciador de licença.
Localiza a licença e desmarca a opção emprestar e clica novamente, para marcar. Isso irá forçar o programa a emprestar a licença novamente e a informação de que a licença está efetivamente emprestada será salva no registro do windows:
Agora, clica o botão "Exportar Licenças":
E salve onde o programa está. Assim, ao usar o plugin no computador "B" que não sabe nada sobre as suas licenças e receber a tela de registro, você irá clicar o botão "Importar":
Isso irá importar as informações salvas no arquivo externo para o registro do Windows e agora o gerenciador de licenças saberá o número da licença, o serial de onde o programa está instalado e as informações de que ela está emprestada.
Parece difícil? Sim, parece.
Mas é necessário...
Como eu disse, tá cheio de espertinho no mundo e meu servidor recebe tentativas de fraude o tempo todo...
Últimas observações:
O tbn2net.utils.exe está nos 5 pacotes de programas mencionados lá no início do texto. Agora, qual deles devo abrir? Se você mantiver sempre a última versão dos programas, eles serão o mesmo. Senão, escolha o que tiver data mais atual.
Posso emprestar licenças demonstrativas? Pode, até o prazo de validade das mesmas. Então se você alugou o programa por 1 mês, poderá emprestar a licença por este período ou o que restar dele.
Quanto tempo dura o empréstimo das licenças definitivas? 60 dias.
Posso emprestar novamente antes do período terminar? Sim.
Se eu emprestar a licença, poderei atualizar ou mudar o serial associado? Não, pois receberá o erro de licença emprestada. Neste caso, entre em contato comigo para desbloquear estas opções (contatos no início da página. do lado esquerdo)
É isso.
Dúvidas?
Parece difícil? Sim, parece.
Mas é necessário...
Como eu disse, tá cheio de espertinho no mundo e meu servidor recebe tentativas de fraude o tempo todo...
Últimas observações:
O tbn2net.utils.exe está nos 5 pacotes de programas mencionados lá no início do texto. Agora, qual deles devo abrir? Se você mantiver sempre a última versão dos programas, eles serão o mesmo. Senão, escolha o que tiver data mais atual.
Posso emprestar licenças demonstrativas? Pode, até o prazo de validade das mesmas. Então se você alugou o programa por 1 mês, poderá emprestar a licença por este período ou o que restar dele.
Quanto tempo dura o empréstimo das licenças definitivas? 60 dias.
Posso emprestar novamente antes do período terminar? Sim.
Se eu emprestar a licença, poderei atualizar ou mudar o serial associado? Não, pois receberá o erro de licença emprestada. Neste caso, entre em contato comigo para desbloquear estas opções (contatos no início da página. do lado esquerdo)
É isso.
Dúvidas?
Tabelas explodidas no AutoCAD
Fala pessoal, como que está a expectativa para o Autodesk University 2016??
Já conferiu a promoção da minha página?? Anida não? Então corre!!
Bom, mas este post não é pra falar disso. É para voltar um pouco às origens!!! Isso mesmo!!! Vamos falar de Visual Lisp galera!!!
O problema de hoje é o seguinte: Tabelas no CAD que estão explodidas e nós precisamos extrair os dados dali.
Já deu pra perceber que isso pode ser bem chato, não é?
Eu mesmo tive esse problema esta semana e, como eu amaldiçoei obocó desenhista que fez isso, hehehe:
Aqui, um exemplo de tabela explodida, no AutoCAD.
Bem simples, só pra efeito de mostrar a "lispezinha" abaixo.
Veja como fica o resultado:
Da hora, né? Agora, dá pra copiar e colar no M$ Excel, ou até mesmo colar no CAD como uma tabela de verdade!!!
Bom, mas e a lisp? Veja:
;pesquisa no google:
(vl-load-com)
;Dwg2Html - plugin para exportar tabelas explodidas para html
(defun c:Dwg2Html (/ linhasVerticais linhasHoriz linhas ent p1 p2 counter
nLin html nCol x1 x2 y1 y2 tmp ssTxt file opcao)
;inicializa as listas de X e Y
(setq linhasVerticais nil
linhasHoriz nil)
;pede a seleção das linhas que formam a tabela
;precisa ser linha continua, para definir o espaço de cada célula
(prompt "\nSelecione as linhas que desenham as tabelas")
(setq linhas (ssget '((0 . "*LINE"))))
(if (not linhas) (exit))
;pode ter mais de um texto na celula. Eles serão concatenados
;com espaço ou quebras
(initget "Q E" 0)
(setq opcao
(getkword "\nSelecione o tipo de quebra manual [Quebra, Espaço] <Quebra>")
opcao (if (= "E" opcao) " " "<br>"))
;pede onde salvar o arquivo html
(setq file (getfiled "Exportar tabela" "" "html" 1))
(if (not file) (exit))
;classifica as linhas em: horizontais e verticais
(repeat (sslength linhas)
(setq ent (ssname linhas 0)
p1 (vlax-curve-getstartpoint ent)
p2 (vlax-curve-getendpoint ent))
(if (equal (car p1) (car p2) 0.0001)
(if (not (member (car p1) linhasVerticais))
(setq linhasVerticais (cons (car p1) linhasVerticais)))
(if (not (member (cadr p1) linhasHoriz))
(setq linhasHoriz (cons (cadr p1) linhasHoriz))))
(ssdel ent linhas))
;ordena a lista das linhas verticais pelo X crescente e
;as linhas horizontais pelo Y decrescente
(setq linhasVerticais (vl-sort linhasVerticais '<)
linhasHoriz (vl-sort linhasHoriz '>))
;calcula o canto superior esquerdo e inferior direito:
(setq p1 (list (car linhasVerticais) (car linhasHoriz))
p2 (list (last linhasVerticais) (last linhasHoriz)))
;zoom window na tabela, para a seleção dos textos funcionar
(vla-zoomwindow (vlax-get-acad-object)
(vlax-3d-point p1) (vlax-3d-point p2))
;inicia o cabeçalho do html
(setq html (strcat "<html>
<head>
<meta http-equiv='Content-Type;X-UA-Compatible'
content='text/html;IE=9' charset='ISO-8859-1'>
<title>Dwg2Html: " (vl-filename-base file) "</title>
<style>
body { font-family: arial; }
p { font-weight: bold; }
table { border-collapse: collapse; width: 100%;}
td { border: 1px solid black; text-align:center; }
a { text-decoration: none; }
</style>
</head>
<body>
<p>
Visite: <a href='https://tbn2net.com'>TBN2NET,
o melhor site de plug-ins para o AutoCAD!!!</a></p>
<p>Arquivo: " (vl-string-translate "\\" "/" file) "</p>
<br>
<table>
"))
;repita para todas as linhas horizontais
(setq nLin 0
counter 0)
(repeat (1- (length linhasHoriz))
;calcula os limites em Y da linha
(setq y1 (nth nLin linhasHoriz)
nLin (1+ nLin)
y2 (nth nLin linhasHoriz)
nCol 0)
;inicia o html da linha ('tr')
(setq html (strcat html "<tr>"))
;repita para todas as colunas da linha
(repeat (1- (length linhasVerticais))
;calcula os limites em X da coluna
(setq x1 (nth nCol linhasVerticais)
nCol (1+ nCol)
x2 (nth nCol linhasVerticais))
;tenta selecionar os textos dentro dos limites da célula
(setq ssTxt (ssget "C" (list x1 y1)
(list x2 y2)
'((0 . "*TEXT"))))
;se encontrou
(if ssTxt
(progn
;liste-os:
(setq tmp nil)
(repeat (sslength ssTxt)
(setq ent (ssname ssTxt 0)
tmp (cons (list (cdr (assoc 10 (entget ent)))
(cdr (assoc 1 (entget ent))))
tmp))
(ssdel ent ssTxt))
;classifique pelo Y decrescente e concatende,
;colocando quebra de linha ('br')
(setq tmp (vl-sort tmp '(lambda (a b)
(> (cadar a) (cadar b))))
tmp (apply 'strcat
(mapcar '(lambda (a)
(strcat (cadr a) opcao))
tmp))
tmp (vl-string-trim opcao tmp)))
(setq tmp " "))
;adiciona uma celula no html
(setq html (strcat html "<td>" tmp "</td>")))
;finaliza o html da linha
(Setq counter (1+ counter)
html (strcat html "</tr>")))
;finaliza o html da tabela
(Setq html (strcat html "</table>"))
;finaliza o html
(setq html (strcat html "</body></html>"))
;salva o arquivo
(setq tmp (open file "w"))
(write-line html tmp)
(close tmp)
;abre o arquivo com o navegador padrão
(browser file)
(princ)
)
(prompt "
Dwg2Html carregado com sucesso!!
Visite: https://tbn2net.com/DWG2HTML
Autor: Neyton Luiz Dalle Molle
Engenheiro Civil
WhatsApp: +55 98 99995 3538
")
(princ)
A ideia é simples, as linhas horizontais e verticais da tabela delimitam espaços para as células. Então basta iterar um looping que procura textos nestes espaços e monta uma tabela em HTML.
Note que o programa não "entende" células mescladas, mas isso não é o problema, ok?
Se gostou do programa, que tal baixar ele pronto pra usar ??
Já conferiu a promoção da minha página?? Anida não? Então corre!!
Bom, mas este post não é pra falar disso. É para voltar um pouco às origens!!! Isso mesmo!!! Vamos falar de Visual Lisp galera!!!
O problema de hoje é o seguinte: Tabelas no CAD que estão explodidas e nós precisamos extrair os dados dali.
Já deu pra perceber que isso pode ser bem chato, não é?
Eu mesmo tive esse problema esta semana e, como eu amaldiçoei o
Aqui, um exemplo de tabela explodida, no AutoCAD.
Bem simples, só pra efeito de mostrar a "lispezinha" abaixo.
Veja como fica o resultado:
Da hora, né? Agora, dá pra copiar e colar no M$ Excel, ou até mesmo colar no CAD como uma tabela de verdade!!!
Bom, mas e a lisp? Veja:
;pesquisa no google:
(vl-load-com)
;Dwg2Html - plugin para exportar tabelas explodidas para html
(defun c:Dwg2Html (/ linhasVerticais linhasHoriz linhas ent p1 p2 counter
nLin html nCol x1 x2 y1 y2 tmp ssTxt file opcao)
;inicializa as listas de X e Y
(setq linhasVerticais nil
linhasHoriz nil)
;pede a seleção das linhas que formam a tabela
;precisa ser linha continua, para definir o espaço de cada célula
(prompt "\nSelecione as linhas que desenham as tabelas")
(setq linhas (ssget '((0 . "*LINE"))))
(if (not linhas) (exit))
;pode ter mais de um texto na celula. Eles serão concatenados
;com espaço ou quebras
(initget "Q E" 0)
(setq opcao
(getkword "\nSelecione o tipo de quebra manual [Quebra, Espaço] <Quebra>")
opcao (if (= "E" opcao) " " "<br>"))
;pede onde salvar o arquivo html
(setq file (getfiled "Exportar tabela" "" "html" 1))
(if (not file) (exit))
;classifica as linhas em: horizontais e verticais
(repeat (sslength linhas)
(setq ent (ssname linhas 0)
p1 (vlax-curve-getstartpoint ent)
p2 (vlax-curve-getendpoint ent))
(if (equal (car p1) (car p2) 0.0001)
(if (not (member (car p1) linhasVerticais))
(setq linhasVerticais (cons (car p1) linhasVerticais)))
(if (not (member (cadr p1) linhasHoriz))
(setq linhasHoriz (cons (cadr p1) linhasHoriz))))
(ssdel ent linhas))
;ordena a lista das linhas verticais pelo X crescente e
;as linhas horizontais pelo Y decrescente
(setq linhasVerticais (vl-sort linhasVerticais '<)
linhasHoriz (vl-sort linhasHoriz '>))
;calcula o canto superior esquerdo e inferior direito:
(setq p1 (list (car linhasVerticais) (car linhasHoriz))
p2 (list (last linhasVerticais) (last linhasHoriz)))
;zoom window na tabela, para a seleção dos textos funcionar
(vla-zoomwindow (vlax-get-acad-object)
(vlax-3d-point p1) (vlax-3d-point p2))
;inicia o cabeçalho do html
(setq html (strcat "<html>
<head>
<meta http-equiv='Content-Type;X-UA-Compatible'
content='text/html;IE=9' charset='ISO-8859-1'>
<title>Dwg2Html: " (vl-filename-base file) "</title>
<style>
body { font-family: arial; }
p { font-weight: bold; }
table { border-collapse: collapse; width: 100%;}
td { border: 1px solid black; text-align:center; }
a { text-decoration: none; }
</style>
</head>
<body>
<p>
Visite: <a href='https://tbn2net.com'>TBN2NET,
o melhor site de plug-ins para o AutoCAD!!!</a></p>
<p>Arquivo: " (vl-string-translate "\\" "/" file) "</p>
<br>
<table>
"))
;repita para todas as linhas horizontais
(setq nLin 0
counter 0)
(repeat (1- (length linhasHoriz))
;calcula os limites em Y da linha
(setq y1 (nth nLin linhasHoriz)
nLin (1+ nLin)
y2 (nth nLin linhasHoriz)
nCol 0)
;inicia o html da linha ('tr')
(setq html (strcat html "<tr>"))
;repita para todas as colunas da linha
(repeat (1- (length linhasVerticais))
;calcula os limites em X da coluna
(setq x1 (nth nCol linhasVerticais)
nCol (1+ nCol)
x2 (nth nCol linhasVerticais))
;tenta selecionar os textos dentro dos limites da célula
(setq ssTxt (ssget "C" (list x1 y1)
(list x2 y2)
'((0 . "*TEXT"))))
;se encontrou
(if ssTxt
(progn
;liste-os:
(setq tmp nil)
(repeat (sslength ssTxt)
(setq ent (ssname ssTxt 0)
tmp (cons (list (cdr (assoc 10 (entget ent)))
(cdr (assoc 1 (entget ent))))
tmp))
(ssdel ent ssTxt))
;classifique pelo Y decrescente e concatende,
;colocando quebra de linha ('br')
(setq tmp (vl-sort tmp '(lambda (a b)
(> (cadar a) (cadar b))))
tmp (apply 'strcat
(mapcar '(lambda (a)
(strcat (cadr a) opcao))
tmp))
tmp (vl-string-trim opcao tmp)))
(setq tmp " "))
;adiciona uma celula no html
(setq html (strcat html "<td>" tmp "</td>")))
;finaliza o html da linha
(Setq counter (1+ counter)
html (strcat html "</tr>")))
;finaliza o html da tabela
(Setq html (strcat html "</table>"))
;finaliza o html
(setq html (strcat html "</body></html>"))
;salva o arquivo
(setq tmp (open file "w"))
(write-line html tmp)
(close tmp)
;abre o arquivo com o navegador padrão
(browser file)
(princ)
)
(prompt "
Dwg2Html carregado com sucesso!!
Visite: https://tbn2net.com/DWG2HTML
Autor: Neyton Luiz Dalle Molle
Engenheiro Civil
WhatsApp: +55 98 99995 3538
")
(princ)
A ideia é simples, as linhas horizontais e verticais da tabela delimitam espaços para as células. Então basta iterar um looping que procura textos nestes espaços e monta uma tabela em HTML.
Note que o programa não "entende" células mescladas, mas isso não é o problema, ok?
Se gostou do programa, que tal baixar ele pronto pra usar ??
Promoção para o Autodesk University 2016!!!
E então, vai participar do Autodesk University deste ano?
Ops, ainda não sabe do que se trata? Então visite a página:
Como é de costume já, o site TBN2NET está todo em promoção, daquelas, básicas, tipo 50% de desconto!!!
São diversos programas, por exemplo:
C3DRENESG4, para dimensionamento de redes de drenagem e esgoto urbanos
TBN2C3D, coleção de plugins para o Civil 3D
TBN2CAD, coleção de plugins para AutoCAD
C3DMEMO, para criar memoriais descritivos e tabelas de loteamentos
TBN2VLX, coletânea de lisps para AutoCAD e Civil 3D
DDM, para cálculo de distribuição de terraplenagem
EXPGE, para importar/exportar DWG para KML (Google Earth)
Aplicável aos plugins individuais.
O preços dos plugins estão em suas respectivas páginas e estão sem desconto.
Entre em contato para conseguir o desconto!!
Ops, ainda não sabe do que se trata? Então visite a página:
Como é de costume já, o site TBN2NET está todo em promoção, daquelas, básicas, tipo 50% de desconto!!!
São diversos programas, por exemplo:
C3DRENESG4, para dimensionamento de redes de drenagem e esgoto urbanos
TBN2C3D, coleção de plugins para o Civil 3D
TBN2CAD, coleção de plugins para AutoCAD
C3DMEMO, para criar memoriais descritivos e tabelas de loteamentos
TBN2VLX, coletânea de lisps para AutoCAD e Civil 3D
DDM, para cálculo de distribuição de terraplenagem
EXPGE, para importar/exportar DWG para KML (Google Earth)
Para ganhar o desconto, é simples, basta entrar em contato comigo no meu Whatsapp/Telegram: +55 98 99995 3538
Compartilhe!!!
Compartilhe!!!
Promoção válida até o dia 18/09/2016
Compartilhe!!!
Compartilhe!!!
Aplicável aos plugins individuais.
O preços dos plugins estão em suas respectivas páginas e estão sem desconto.
Entre em contato para conseguir o desconto!!
Arquivos KMZ e KML
Boa tarde!!!
Mais uma novidade chegando!!!
O melhor programa para exportar desenho de CAD para o o Google Earth e também para importar do Google Earth para o CAD ficou melhor ainda!!!
Agora ele também lê e escreve os arquivos KMZ!!!
Isso mesmo!!
Então corre, faz o download agora do TBN2CAD!!!!
Se você ja tem uma licença do EXPGE2 ou READKML2 é só atualizar!!! Não tem custo nenhum!!!
Mais uma novidade chegando!!!
O melhor programa para exportar desenho de CAD para o o Google Earth e também para importar do Google Earth para o CAD ficou melhor ainda!!!
Agora ele também lê e escreve os arquivos KMZ!!!
Isso mesmo!!
Então corre, faz o download agora do TBN2CAD!!!!
Se você ja tem uma licença do EXPGE2 ou READKML2 é só atualizar!!! Não tem custo nenhum!!!
TBN2C3D - Novos programas
Boa tarde pessoal!!!
Continuando com o constante desenvolvimento dos plugins TBN2C3D, hoje adicionei mais dois plugins ao pacote!!
Um dos programas é o MCORREDOR.
Ele cria corredor nos alinhamentos selecionados.
Sabe aqueles loteamentos enormes, cheio de ruas? Fazer corredor em cada alinhamento pode ser beeeeemmm massante, não?
Então, com esse programa, você seleciona os alinhamentos, configura alguns itens, tipo o greide (que o o programa escolhe sozinho, pra agilizar) a seção típo e a superfície que os taludes devem procurar e pronto, tá lá, seus trocentos corredores!!!
Dá uma olhada na tela dele:
Vê? E se a superfície for a mesma em todos (e será a maioria das vezes), clica o botão direito na primeira e manda repetir pra todos!!
E o segundo programa? é o MCORRSURF.
Ele cria superfície nos corredores selecionados!!!
Deu pra perceber que fazer loteamento fica barbada, não?
Olha a tela do programa:
Pra usar, chame o comando, selecione os corredores, clica o link ou featureline e clica o botão para adicionar.
Ele irá adicionar em todos os selecionados da lista.
Simples, não ?
Ah, estes dois programas estão no pacote TBN2C3D
Nele tem ainda o MPERFIL e MPROFVIEW.
Adivinha só o que eles fazem!!!
Continuando com o constante desenvolvimento dos plugins TBN2C3D, hoje adicionei mais dois plugins ao pacote!!
Um dos programas é o MCORREDOR.
Ele cria corredor nos alinhamentos selecionados.
Sabe aqueles loteamentos enormes, cheio de ruas? Fazer corredor em cada alinhamento pode ser beeeeemmm massante, não?
Então, com esse programa, você seleciona os alinhamentos, configura alguns itens, tipo o greide (que o o programa escolhe sozinho, pra agilizar) a seção típo e a superfície que os taludes devem procurar e pronto, tá lá, seus trocentos corredores!!!
Dá uma olhada na tela dele:
Vê? E se a superfície for a mesma em todos (e será a maioria das vezes), clica o botão direito na primeira e manda repetir pra todos!!
E o segundo programa? é o MCORRSURF.
Ele cria superfície nos corredores selecionados!!!
Deu pra perceber que fazer loteamento fica barbada, não?
Olha a tela do programa:
Pra usar, chame o comando, selecione os corredores, clica o link ou featureline e clica o botão para adicionar.
Ele irá adicionar em todos os selecionados da lista.
Simples, não ?
Ah, estes dois programas estão no pacote TBN2C3D
Nele tem ainda o MPERFIL e MPROFVIEW.
Adivinha só o que eles fazem!!!
C3DMEMO - Vídeo tutorial
Bom dia pessoal!! Hoje vou postar alguns vídeos que produzi sobre o C3DMEMO, o meu plugin para criação de memoriais descritivos!!!
Apresentação e dicas, você irá aprender a instalar o programa e configurar o desenho para usar o programa:
Legal Description Creator, para você aprender como criar um template de memorial no formato de texto plano:
Table Creator, neste vídeo, veja como configurar um template que cria tabelas de áreas de lotes, locação com coordenadas, distâncias e azimutes:
Apresentação e dicas, você irá aprender a instalar o programa e configurar o desenho para usar o programa:
Legal Description Creator, para você aprender como criar um template de memorial no formato de texto plano:
Table Creator, neste vídeo, veja como configurar um template que cria tabelas de áreas de lotes, locação com coordenadas, distâncias e azimutes:
Loteamento Explodido? Lamentável, mas tem jeito!!!
Hoje recebi um pedido de um cliente para testar o CADMEMO no projeto dele. Só que o desenho era CAD puro e os lotes não eram polilinhas fechadas, nem ao menos os nomes dos lotes eram blocos. Condições estas para o CADMEMO funcionar.
Bem, isso é problema? Sim, de certa forma. Se fosse converter tudo em PARCEL no Civil 3D, ainda teria de renomear os parcels gerados....
A maneira mais rápida que consegui pensar pra isso é escrever um pequeno lisp para interpretar o projeto e criar as polilinhas e os blocos.
O código fonte segue abaixo. Veja que usei o comando BPOLY para obter uma polilinha fechada e inseri o bloco necessário no centroide da polilinha.
Para obter este centroide, usei uma REGION temporária.
Para rodar é bem simples, tenha os blocos:
LOTE - bloco que informará o nome do lote, tem os atributos NOME, AREA, DESC
QUADRA - bloco que informará o nome da quadra, tem o atributo NOME
Agora, carregue com o APPLOAD.
Ao chamar o comando na linha de comando, serão pedidas as informações de nome do layer, bloco etc, caso você queira reconfigurar os parâmetros do lisp.
Bom, sem mais delongas, segue o código:
;lembrar valores padrão:
(setq txtl2pl:blocolote "LOTE"
txtl2pl:layernomelote "DIM"
txtl2pl:layerlote "LOTE"
txtl2pl:escala 0.3
txtl2pl:areatpl "A={}m²"
txtl2pl:raioerro 3
txtl2pl:layererro "_erro"
txtl2pl:filtro "L.*"
txtl2pl:attnome "NOME"
txtl2pl:attarea "AREA"
txtl2pl:attdesc "DESC"
txtl2pl:desc "c3dmemo")
;programa que desenha polilinha e bloco com atributos
(defun c:txtl2pl (/ ss ent pl bloco vla thisdrawing rg
objArray rg Centroid att tag model tmp)
;controle de erros:
(tbn:error-init nil)
;inicia ponteiros para o desenho atual e model space
(setq thisdrawing (vla-get-activedocument (vlax-get-acad-object))
model (vla-get-modelspace thisdrawing))
;reconfigura os valores padrão:
(setq tmp (car (entsel (strcat
"\nClique um texto para obter o layer do nome do"
" lote ou clique enter para aceitar <"
txtl2pl:layernomelote ">"))))
(if tmp (setq txtl2pl:layernomelote (cdr (assoc 8 (entget tmp)))))
(setq tmp (getstring (strcat
"\nInforme o nome do bloco"
" a inserir ou clique enter para aceitar <"
txtl2pl:blocolote ">")))
(if (/= "" tmp) (setq txtl2pl:blocolote tmp))
(setq tmp (getstring (strcat "\nInforme o atributo do"
" nome do lote, ou enter para aceitar <" txtl2pl:attnome ">")))
(if (/= "" tmp) (setq txtl2pl:attnome tmp))
(setq tmp (getstring (strcat "\nInforme o atributo da"
" area do lote, ou enter para aceitar <" txtl2pl:attarea ">")))
(if (/= "" tmp) (setq txtl2pl:attarea tmp))
(setq tmp (getstring (strcat "\nInforme o atributo da descrição"
" do lote, ou enter para aceitar <" txtl2pl:attdesc ">")))
(if (/= "" tmp) (setq txtl2pl:attdesc tmp))
(setq tmp (getstring (strcat "\nInforme uma descrição a aplicar,"
" ou enter para aceitar <" txtl2pl:desc ">")))
(if (/= "" tmp) (setq txtl2pl:desc tmp))
(setq tmp (getstring (strcat "\nInforme o layer da polilinha de"
" lote, ou enter para aceitar <" txtl2pl:layerlote ">")))
(if (/= "" tmp) (setq txtl2pl:layerlote tmp))
(setq tmp (getstring (strcat "\nInforme o filtro de texto do"
" nome do lote, ou enter para aceitar <" txtl2pl:filtro ">")))
(if (/= "" tmp) (setq txtl2pl:filtro tmp))
;inicia a seleção dos textos a processar:
(prompt (strcat
"\nSelecione os textos do layer <" txtl2pl:layernomelote ">"))
(setq ss (ssget (list '(0 . "TEXT")
(cons 8 txtl2pl:layernomelote)
(cons 1 txtl2pl:filtro))))
;garante que exista o layer da polilinha e dos
;círculos de erro se ocorrerem:
(vla-add (vla-get-layers thisdrawing) txtl2pl:layerlote)
(vla-add (vla-get-layers thisdrawing) txtl2pl:layererro)
;repita em todos os textos:
(repeat (sslength ss)
;pega o promeiro da lista
(setq ent (ssname ss 0)
pt (cdr (assoc 10 (entget ent)))
vla (vlax-ename->vla-object ent))
;remove ele da lista
(ssdel ent ss)
;zoom no texto, para o bpoly funcionar corretamente
(vla-zoomcenter (vlax-get-acad-object)
(vlax-3d-point pt) (getvar "viewsize"))
;tenta o bpoly
(if (vl-catch-all-error-p
(setq pl (vl-catch-all-apply 'bpoly (list pt))))
;se falhar, marca com um círculo
(vla-put-layer (vla-addCircle model (vlax-3d-point pt)
txtl2pl:raioerro) txtl2pl:layererro)
;se funcionar, insere o bloco do nome
;do lote no centroide da polilinha
(progn
;obtem a polilinha
(setq pl (vlax-ename->vla-object pl)
objArray (vlax-make-safearray vlax-vbObject '(0 . 0)))
;seta o seu layer
(vla-put-layer pl txtl2pl:layerlote)
;cria uma region temporaria na polilinha,
;para obter o centroide
(vlax-safearray-fill objArray (list pl))
(setq rg (car (vlax-safearray->list
(vlax-variant-value
(vla-addregion model objArray))))
Centroid (vlax-safearray->list
(vlax-variant-value (vla-get-Centroid rg)))
Centroid (list (car Centroid) (cadr Centroid) 0.0)
;insere o bloco
bloco (vla-insertblock (vla-get-modelspace thisdrawing)
(vlax-3d-point Centroid)
txtl2pl:blocolote txtl2pl:escala
txtl2pl:escala
txtl2pl:escala (vla-get-rotation vla)))
(vla-put-layer bloco txtl2pl:layerlote)
;apaga a region
(vla-delete rg)
;preenche os atributos do bloco
(foreach att (vlax-safearray->list
(vlax-variant-value
(vla-GetAttributes bloco)))
(setq tag (vla-get-tagstring att))
(cond ((eq (strcase tag) (strcase txtl2pl:attnome))
(vla-put-textstring att (vla-get-textstring vla)))
((eq (strcase tag) (strcase txtl2pl:attdesc))
(vla-put-textstring att txtl2pl:desc))
((eq (strcase tag) (strcase txtl2pl:attarea))
(vla-put-textstring att
(vl-string-subst
(rtos (vla-get-area pl) 2 2)
"{}" txtl2pl:areatpl )))))))
)
(tbn:error-restore)
)
(defun tbn:error-init (sys / tmp ss cmd)
(setq tbn:olderr *error*
*error* (lambda (s)
(if (/= s "Function cancelled")
(prompt "\nBomb!! Error: "))
(eval tbn:error_exe)
(tbn:error-restore))
tbn:error_exe (cadr sys)
sys (car sys)
tbn:sysvars nil
ss (ssgetfirst))
(vla-StartUndoMark
(vla-get-ActiveDocument (vlax-get-acad-object)))
(repeat (/ (length sys) 2)
(setq tmp (car sys)
tbn:sysvars (cons (list tmp (getvar tmp))
tbn:sysvars)
tmp (setvar tmp (cadr sys))
sys (cddr sys)))
(sssetfirst (car ss) (cadr ss)))
(defun tbn:error-restore (/ cmd x)
(foreach x tbn:sysvars (setvar (car x) (cadr x)))
(redraw)
(setq *error* tbn:olderr)
(vla-EndUndoMark
(vla-get-ActiveDocument (vlax-get-acad-object)))
(princ))
Veja o dwg de exemplo
Bem, isso é problema? Sim, de certa forma. Se fosse converter tudo em PARCEL no Civil 3D, ainda teria de renomear os parcels gerados....
A maneira mais rápida que consegui pensar pra isso é escrever um pequeno lisp para interpretar o projeto e criar as polilinhas e os blocos.
O código fonte segue abaixo. Veja que usei o comando BPOLY para obter uma polilinha fechada e inseri o bloco necessário no centroide da polilinha.
Para obter este centroide, usei uma REGION temporária.
Para rodar é bem simples, tenha os blocos:
LOTE - bloco que informará o nome do lote, tem os atributos NOME, AREA, DESC
QUADRA - bloco que informará o nome da quadra, tem o atributo NOME
Agora, carregue com o APPLOAD.
Ao chamar o comando na linha de comando, serão pedidas as informações de nome do layer, bloco etc, caso você queira reconfigurar os parâmetros do lisp.
Bom, sem mais delongas, segue o código:
;lembrar valores padrão:
(setq txtl2pl:blocolote "LOTE"
txtl2pl:layernomelote "DIM"
txtl2pl:layerlote "LOTE"
txtl2pl:escala 0.3
txtl2pl:areatpl "A={}m²"
txtl2pl:raioerro 3
txtl2pl:layererro "_erro"
txtl2pl:filtro "L.*"
txtl2pl:attnome "NOME"
txtl2pl:attarea "AREA"
txtl2pl:attdesc "DESC"
txtl2pl:desc "c3dmemo")
;programa que desenha polilinha e bloco com atributos
(defun c:txtl2pl (/ ss ent pl bloco vla thisdrawing rg
objArray rg Centroid att tag model tmp)
;controle de erros:
(tbn:error-init nil)
;inicia ponteiros para o desenho atual e model space
(setq thisdrawing (vla-get-activedocument (vlax-get-acad-object))
model (vla-get-modelspace thisdrawing))
;reconfigura os valores padrão:
(setq tmp (car (entsel (strcat
"\nClique um texto para obter o layer do nome do"
" lote ou clique enter para aceitar <"
txtl2pl:layernomelote ">"))))
(if tmp (setq txtl2pl:layernomelote (cdr (assoc 8 (entget tmp)))))
(setq tmp (getstring (strcat
"\nInforme o nome do bloco"
" a inserir ou clique enter para aceitar <"
txtl2pl:blocolote ">")))
(if (/= "" tmp) (setq txtl2pl:blocolote tmp))
(setq tmp (getstring (strcat "\nInforme o atributo do"
" nome do lote, ou enter para aceitar <" txtl2pl:attnome ">")))
(if (/= "" tmp) (setq txtl2pl:attnome tmp))
(setq tmp (getstring (strcat "\nInforme o atributo da"
" area do lote, ou enter para aceitar <" txtl2pl:attarea ">")))
(if (/= "" tmp) (setq txtl2pl:attarea tmp))
(setq tmp (getstring (strcat "\nInforme o atributo da descrição"
" do lote, ou enter para aceitar <" txtl2pl:attdesc ">")))
(if (/= "" tmp) (setq txtl2pl:attdesc tmp))
(setq tmp (getstring (strcat "\nInforme uma descrição a aplicar,"
" ou enter para aceitar <" txtl2pl:desc ">")))
(if (/= "" tmp) (setq txtl2pl:desc tmp))
(setq tmp (getstring (strcat "\nInforme o layer da polilinha de"
" lote, ou enter para aceitar <" txtl2pl:layerlote ">")))
(if (/= "" tmp) (setq txtl2pl:layerlote tmp))
(setq tmp (getstring (strcat "\nInforme o filtro de texto do"
" nome do lote, ou enter para aceitar <" txtl2pl:filtro ">")))
(if (/= "" tmp) (setq txtl2pl:filtro tmp))
;inicia a seleção dos textos a processar:
(prompt (strcat
"\nSelecione os textos do layer <" txtl2pl:layernomelote ">"))
(setq ss (ssget (list '(0 . "TEXT")
(cons 8 txtl2pl:layernomelote)
(cons 1 txtl2pl:filtro))))
;garante que exista o layer da polilinha e dos
;círculos de erro se ocorrerem:
(vla-add (vla-get-layers thisdrawing) txtl2pl:layerlote)
(vla-add (vla-get-layers thisdrawing) txtl2pl:layererro)
;repita em todos os textos:
(repeat (sslength ss)
;pega o promeiro da lista
(setq ent (ssname ss 0)
pt (cdr (assoc 10 (entget ent)))
vla (vlax-ename->vla-object ent))
;remove ele da lista
(ssdel ent ss)
;zoom no texto, para o bpoly funcionar corretamente
(vla-zoomcenter (vlax-get-acad-object)
(vlax-3d-point pt) (getvar "viewsize"))
;tenta o bpoly
(if (vl-catch-all-error-p
(setq pl (vl-catch-all-apply 'bpoly (list pt))))
;se falhar, marca com um círculo
(vla-put-layer (vla-addCircle model (vlax-3d-point pt)
txtl2pl:raioerro) txtl2pl:layererro)
;se funcionar, insere o bloco do nome
;do lote no centroide da polilinha
(progn
;obtem a polilinha
(setq pl (vlax-ename->vla-object pl)
objArray (vlax-make-safearray vlax-vbObject '(0 . 0)))
;seta o seu layer
(vla-put-layer pl txtl2pl:layerlote)
;cria uma region temporaria na polilinha,
;para obter o centroide
(vlax-safearray-fill objArray (list pl))
(setq rg (car (vlax-safearray->list
(vlax-variant-value
(vla-addregion model objArray))))
Centroid (vlax-safearray->list
(vlax-variant-value (vla-get-Centroid rg)))
Centroid (list (car Centroid) (cadr Centroid) 0.0)
;insere o bloco
bloco (vla-insertblock (vla-get-modelspace thisdrawing)
(vlax-3d-point Centroid)
txtl2pl:blocolote txtl2pl:escala
txtl2pl:escala
txtl2pl:escala (vla-get-rotation vla)))
(vla-put-layer bloco txtl2pl:layerlote)
;apaga a region
(vla-delete rg)
;preenche os atributos do bloco
(foreach att (vlax-safearray->list
(vlax-variant-value
(vla-GetAttributes bloco)))
(setq tag (vla-get-tagstring att))
(cond ((eq (strcase tag) (strcase txtl2pl:attnome))
(vla-put-textstring att (vla-get-textstring vla)))
((eq (strcase tag) (strcase txtl2pl:attdesc))
(vla-put-textstring att txtl2pl:desc))
((eq (strcase tag) (strcase txtl2pl:attarea))
(vla-put-textstring att
(vl-string-subst
(rtos (vla-get-area pl) 2 2)
"{}" txtl2pl:areatpl )))))))
)
(tbn:error-restore)
)
(defun tbn:error-init (sys / tmp ss cmd)
(setq tbn:olderr *error*
*error* (lambda (s)
(if (/= s "Function cancelled")
(prompt "\nBomb!! Error: "))
(eval tbn:error_exe)
(tbn:error-restore))
tbn:error_exe (cadr sys)
sys (car sys)
tbn:sysvars nil
ss (ssgetfirst))
(vla-StartUndoMark
(vla-get-ActiveDocument (vlax-get-acad-object)))
(repeat (/ (length sys) 2)
(setq tmp (car sys)
tbn:sysvars (cons (list tmp (getvar tmp))
tbn:sysvars)
tmp (setvar tmp (cadr sys))
sys (cddr sys)))
(sssetfirst (car ss) (cadr ss)))
(defun tbn:error-restore (/ cmd x)
(foreach x tbn:sysvars (setvar (car x) (cadr x)))
(redraw)
(setq *error* tbn:olderr)
(vla-EndUndoMark
(vla-get-ActiveDocument (vlax-get-acad-object)))
(princ))
Veja o dwg de exemplo
Notaserv2 - novas funções!!!
Bom dia!!!
O post de hoje é para mostrar uma novidade no Notaserv²!!!
Ontem um cliente questionou se seria possível implementar este exemplo no programa:
Percebem que existem dados extras na estaca 20+00? Seria o caso de rodovia com mais de uma faixa por pista.
Na versão anterior do programa, o usuário deveria incluir mais colunas. O que não é problema, mas dependendo do número de colunas, a largura da planilha pode crescer muito, o que tornaria ruim de ler.
Neste caso, colocar os valores alinhados numa coluna apenas, é mais indicado.
Bom, a ideia do meu cliente é muito relevante, sendo assim, implementei no no Notaserv².
Se você já possui uma licença, basta atualizar, não tem custo nenhum!!!
Se você ainda não tem uma licença e quer testar este programa, não perca mais tempo, baixe agora mesmo!!! Vai que você gosta e quer comprar a licença ou mesmo alugar ela por uns dias, aliás o aluguel é baratíssimo!!!
Ah,mencionei que o programa também pode listar os cogo points em função de um alinhamento??
Não? Sim, ele pode!!!
Se a nota acima já está configurada e salva como template no pacote do programa??
É claro!!!
O post de hoje é para mostrar uma novidade no Notaserv²!!!
Ontem um cliente questionou se seria possível implementar este exemplo no programa:
Percebem que existem dados extras na estaca 20+00? Seria o caso de rodovia com mais de uma faixa por pista.
Na versão anterior do programa, o usuário deveria incluir mais colunas. O que não é problema, mas dependendo do número de colunas, a largura da planilha pode crescer muito, o que tornaria ruim de ler.
Neste caso, colocar os valores alinhados numa coluna apenas, é mais indicado.
Bom, a ideia do meu cliente é muito relevante, sendo assim, implementei no no Notaserv².
Se você já possui uma licença, basta atualizar, não tem custo nenhum!!!
Se você ainda não tem uma licença e quer testar este programa, não perca mais tempo, baixe agora mesmo!!! Vai que você gosta e quer comprar a licença ou mesmo alugar ela por uns dias, aliás o aluguel é baratíssimo!!!
Ah,mencionei que o programa também pode listar os cogo points em função de um alinhamento??
Não? Sim, ele pode!!!
Se a nota acima já está configurada e salva como template no pacote do programa??
É claro!!!
TBN2C3D - English Version - Coming soon!!!
Published AppStore: | AutoCAD Civil 3D |
Supported Language: | en |
App Name: | TBN2C3D |
App Short Description: | Plugins for Autodesk® AutoCAD® Civil 3D® |
App Description: | |
The TBN2C3D is a collection of programs for productivity within the platform in Autodesk® AutoCAD® Civil 3D®. There are programs for generating horizontal and vertical geometry reports, volume, location, profiles, survey and points. This is a demo version of this program. You can use it with some restrictions. If you want to test the program without limitation, register a demo license. It's free and you will have 15 days to test. If you are a student, please contact us to get a valid student license for 3 months!!! | |
Company Name: | TBN2NET |
Company URL: | https://tbn2net.com |
Support Contact: | neyton@yahoo.com |
Type: | Trial |
Price: | Trial |
Publisher: | Neyton Luiz Dalle Molle |
Email: | neyton@yahoo.com |
PayPal Email for Payments: | neyton@yahoo.com |
App File: | |
App Icon: | TBN2C3D.png |
Application Compatibility: | Autodesk AutoCAD Civil 3D 2016, Autodesk AutoCAD Civil 3D 2015, Autodesk AutoCAD Civil 3D 2014, Autodesk AutoCAD Civil 3D 2013 |
Store Categories: | Road Design, Civil, Quantity Take Off, Volumes |
General Usage Instructions: | Be sure to read the help before testing any program |
Installation/Uninstallation: | The installer that ran when you downloaded this plug-in Autodesk Exchange Apps already has installed the plug-in. You may need to restart the Autodesk product to activate the plug-in. To uninstall this plug-in, click Control Panel> Programs> Programs and Features (Windows 7/8 / 8.1) or Control Panel> Add or Remove Programs (Windows XP), and uninstall it as you would any other application your system. |
Additional Information: | This is a demo version of this program. You can use it with some restrictions. If you want to test the program without limitation, record a demo license. It's free and you will have 15 days to test. If you are a student, please contact us to get a valid student license for 3 months !!! |
Known Issues: | For the NOTASERV2 work properly with areas and volumes, materials sections need to be a visible style. It may be that the Windows lock the program DLLs. To avoid this, click the right mouse button on the DLLs, click Properties and click the Unlock button. The same should be done with the help files (* .chm) |
Assinar:
Postagens (Atom)