PDA

View Full Version : Como medir várias polylines em simultâneo?



cmarkes
2007-01-25, 03:24 PM
Oi

Trabalho na área da construção civil e gostaria de saber como posso medir o comprimento de varias linhas ou polylines em simultâneo. A melhor maneira que encontrei até agora é executando o comando "LIST" e assim vejo uma lista com as características de todos os objectos selecionados, mas o ideal era que conseguisse ver o comprimento total de várias linhas selecionadas.

Agradecia que me ajudassem se souberem como resolver este problema.

jorge.anjos
2007-01-25, 03:54 PM
Olá,


Segue em anexo uma aplicação em AutoLISP que soma o comprimento de entidades que possuam essa propriedade e apresenta a opção de colocar o valor em texto.

Espero que ajude.

Até breve

Brogueira-CADptbr
2007-01-25, 04:12 PM
Jorge,

Quando eu ia responder enviando essa tua rotina em AutoLisp já tu tinhas respondido.
Obrigado pela tua colaboração.

Já agora o Jorge Anjos tem mais algumas rotinas, muito uteis, que passo a descrever:

Lin_Dir_Targ.lsp
Função: Aplicação para desenhar linhas entre os pontos "direction" e "target" de todas as Vistas gravadas
Comando: LIDT

QualVer.lsp
Função: Aplicação para determinar em que versão foi gravado o ficheiro dwg aberto
Comando: QUALVER

Mover_Txt_Coord_Z.lsp
Função: Aplicação para mover texto (pontos topográficos) para a respectiva coordenada Z
Comando: MVTXTZ

Rodar_Texto_2D.lsp
Função: Aplicação para rodar texto com o eixo no ponto intermédio da diagonal
Comando: ROTXT

Gesto_Xrefs.lsp
Função: Aplicação para gerir referências externas
Comando: XDE - Desligar (Detach) referência externa por selecção
XDEE - Desligar (Detach) todas as referências externas
XUN - Desactivar (Unload) referência externa por selecção
XUNN - Desactivar (Unload) todas as referências externas
XRE - Reinicializar (Reload) referência externa por selecção
XREE - Reinicializar (Reload) todas as referências externas
XBI - Unir (Bind) referência externa por selecção

Des_Pontos_Polys.lsp
Função: Aplicação para desenhar um ponto em cada vértice de uma polilinha
Comando: DPPOL

Soma_Volumes.lsp
Função: Aplicação para somar volumes de sólidos 3D, com a possibilidade de colocar o resultado como text
Comando: SOMAVOL

Soma_Areas.lsp
Função: Aplicação para somar áreas de entidades, com a possibilidade de colocar o resultado como texto
Comando: SOMAREA

=============
Estou certo que se vocês as acharem interessantes e as solicitarem ele as irá colocar à disposição.

Um abraço

cmarkes
2007-01-26, 01:59 PM
olá outra vez,


Como rookie que sou nestas andanças não percebo patavina de autolisp. Não consigo pôr a funcionar a rotina "soma_perimetros" postada pelo Jorge. Já dei uma vista de olhos por este fórum e apercebi-me que tenho que colocar a aplicação numa pasta e indicar no autocad a sua localização através de Tools/options/Files/Support file search path. No entanto quando executo o comando SOMAPER não funciona.

Será que se trata do comando correcto?Deverei digitar 'entre plicas'?
Preciso de fazer alguma modificação ao AutoCad para as aplicações autolisp funcionarem?Estou a usar o AutoCad LT 2004

De qualquer maneira esta história do autolisp parece-me ser uma ferramenta importante para a customização do AutoCad.


Os meus agradecimentos pela ajuda prestada

Brogueira-CADptbr
2007-01-26, 02:20 PM
É só baixar ela colocá-la na pasta support do seu AutoCAD e carregá-la para depois poder chamar o comando.


Como carregar? Vá a Tools>Load Application… e depois é como se estivessem a abrir um arquivo no windows. Irá aparecer uma mensagem em inglês que informa que o arquivo foi carregado com sucesso. A partir daí é só chamar o comando…

Cada vez que precisar da rotina numa nova sessão do AutoCAD terá de a recarregar.

jorge.anjos
2007-01-26, 03:10 PM
Olá,

Peço desculpa, houve precipitação na minha resposta, pois parti do princípio que estava a utilizar o AutoCAD e não uma versão LT. Creio que não é possível correr aplicações AutoLISP em AutoCADs LT, a não ser que esteja instalado algum programa extra que permita isso.

Para correr num AutoCAD a aplicação que enviei, não é necessário seguir o procedimento que descreveste.
Como há várias formas de o fazer, para além daquela que o João Brogueira já explicou, descrevo a seguir outra que acho ser bastante simples, principalmente para testar uma aplicação AutoLISP.

No Windows, "arrastar" o ficheiro Soma_Perímetros.lsp para qualquer ponto do desenho que quer utilizar a aplicação. Se o carregamento for bem-sucedido, surgirá a mensagem na linha de comandos "Inicie aplicação com 'SOMAPER'"
Também poderá seleccionar o ficheiro com a tecla esquerda do rato, clicar em Copy (ou Copiar) e no AutoCAD fazer Paste (ou Colar) também com a tecla esquerda ou através do menu suspenso Edit.

Não fiz anteriormente, mas aconselho vivamente a salvar todo o trabalho antes testar qualquer aplicação, seja AutoLISP, VBA, etc..

Até breve

Brogueira-CADptbr
2007-01-26, 03:19 PM
Tens razão Jorge eu também assumi que fosse o AutoCAD e não o LT.

PAULO CASTRO
2007-01-26, 04:15 PM
Caro Jorge

Na semana passada precisei de medir e somar a área de umas centenas de poligonos representativos das áreas uteis e brutas dos compartimentos de vários edifícios. Utilizei a sua rorina SOMA_AREAS.LSP que encontrei no CAD-PT-BR e num instante realizei um trabalho que me poderia ter demorado horas, talvez dias! Um espanto...!!

Mas depois precisei de escrever tudo na forma "A=00.00m2" e a rotina responde na forma "00.00", pelo que tive depois de alterar com uma rorina de prefixação e outra de sufixação.

Tentei incluir esses dois parâmetros na rotina: "A=" como prefixo e "m2" como sufixo.
Em vão. Não tenho conhecimentos para tal.

Estaria na disposição de me ajudar nesse sentido?

Obrigado

PAULO CASTRO
2007-01-26, 04:23 PM
Caro cmarkes

Eu utilizo (Infelizmente...) o Autocad LT com um add-on da drcauto que permite executar autolisp, vba, arx etc. Não é Freeware mas também não custa uma fortuna.
Procure mais respostas no site da drcauto.

cmarkes
2007-01-29, 03:26 PM
Caros colegas

Terei que ponderar esse add-on pois estou a ver que com o LT não me safo.

Muito obrigado pela ajuda prestada.Acho que fiquei esclarecido.

jorge.anjos
2007-01-29, 10:17 PM
Caro Paulo Castro,

Envio em anexo o ficheiro AutoLISP modificado.

A "chave" estava nas linhas
...
(setq TXTOTAL (strcat "A=" (rtos ARSTOTAL 2 LUPRC) "m2"))
...
(setq TXSTOTAL (strcat "A=" (rtos ARSTOTAL 2 LUPRC) "m2"))
...

Espero que esteja bem, apenas fiz alguns ensaios.

Até breve.

PAULO CASTRO
2007-01-30, 02:40 PM
Caro Jorge Anjos

Ensaiei a modificação que fez e parece estar tudo bem...!!

(Só para ver a minha ignorância, eu tentei modificar a rotina mas fi-lo nas linhas do comando "text" tentando inserir os prefixos/sufixos nos locais assinalados com (*)...!! Veja bem a ingenuidade...!)

(command "_.text" "j" "mr" PTINS 00.00 (*)TXSTOTAL(*))

No entanto penso já ter visto algo do género numa outra qualquer rotina... na qual os strings a "escrever" apareciam entre aspas na linha (command... ... ...) ou estarei mesmo a inventar...?

De qualquer modo, agradeço a modificação que fez e vou tentar entendê-la melhor para futuras rotinas.

jorge.anjos
2007-01-31, 01:31 PM
Olá Paulo,

É provável que tenha visto uma instrução do tipo

(command "_.text" "j" "mr" 0.0 1 00.00 " Isto é um teste")

O texto a escrever está de facto entre aspas, mas neste caso o conteúdo foi definido previamente. Na aplicação Soma_Areas o conteúdo depende de vários cálculos, por isso foi necessário usar uma variável para o texto a inserir. Como na maioria dos casos não podemos usar funções autolisp dentro de uma linha command, usei a instrução

(setq TXTOTAL (strcat "A=" (rtos ARSTOTAL 2 LUPRC) "m2"))

em que strcat é a função que vai fazer a concatenação da string "A="
com a conversão do valor da área em string (rtos ARSTOTAL 2 LUPRC)
e com a string "m2"

Até breve

PAULO CASTRO
2007-02-01, 11:37 AM
Caro Jorge

Entendi a sua explicação.

Mas tenho ainda alguma dificuldade em entender muitos dos passos incluídos nesta e noutras rotinas. E isso muitas vezes advém do simples facto as variáveis não terem "nomes" mais intuitivos ou por não existir um comentário do tipo:

;;TXTOTAL - Explicação sumária daquilo que a variável guarda.

Eu utilizo exaustivamente os comentários nas minhas rotinas, não só para terceiros que eventualmente as venham a utilizar, mas principalmente para mim, que sendo um novato e autodidata na matéria, tenho sempre imensas dúvidas.

Como tenho por vezes grandes períodos de paragem na "programação", preciso muito frequentemente de voltar a consultar aquilo que fiz em anteriores rotinas para conseguir avançar noutras que tento "cozinhar".

Penso que este tipo de comentários, por um lado, facilitaria imenso o trabalho de pesquisa na documentação que possuo e por outro, evitaria um pouco "massacre" com perguntas tão básicas como as que tenho feito.

Não entenda isto como crítica Jorge, mas sim como uma mera aspiração de um novato, com alguma vontade mas com muito pouco tempo para estudar.

Obrigado e até breve, com novas "dúvidas existenciais".

jorge.anjos
2007-02-01, 02:22 PM
Caro Paulo,

Tal como o Amigo, mais colegas alertaram-me, e eu aceito como crítica sem qualquer problema, para o facto de as minhas aplicações serem pouco comentadas. Como padeço do mesmo mal, (falta de tempo :lol: ), quando crio uma aplicação dou prioridade a outros factores, relegando para o fim ou mesmo ignorando a facilidade de interpretação ou o sentido pedagógico do código. Não programando profissionalmente, o que me leva a criar uma aplicação é regra geral a necessidade de agilizar tarefas que por processos normais eu levaria muito tempo a executá-las. Acredito que uma boa parte dos colegas passa pelas mesmas dificuldades, por isso sempre posso, partilho com todo o gosto os meus ficheiros, fazendo uma ou outra adaptação, mas sempre consciente das minhas limitações como programador amador. Porém, tenho noção que ao partilhar essas aplicações, a minha responsabilidade aumenta consideravelmente, por isso registo a sua chamada de atenção. Fica a promessa para um código mais refinando numa próxima aplicação direccionada algum colega.

Abri outro tópico sobre livros que abordem o AutoLISP e outras línguas de programação, penso que também será do seu interesse.

Até breve.

jhooneyg
2007-07-17, 12:40 PM
Deixa eu participar tambem deste questionamentos.

Trabalho com projeto topograficos de pavimentação e drenagem urbana e uma coisa q me dava bastante trabalho era quantificar o comprimento de tubos desenhados no CAD e meio-fios.

Fiz a uns dias atraz uma pesquisa pelo site http://www.cadblocos.arq.br e acabei encontrando uma rotina muito boma Totlen de um americao, eu acho q seja, ela soma os comprimentos de elementos selecionados, linhas, polylinhas e arcos e dando um total.

fernando.ramos
2010-07-07, 03:10 PM
Olá,


Segue em anexo uma aplicação em AutoLISP que soma o comprimento de entidades que possuam essa propriedade e apresenta a opção de colocar o valor em texto.

Espero que ajude.

Até breve

Caro jorge,

Qual é o comando para executar esta aplicação?

Cpts,
FRamos

jorgeanjos
2010-07-09, 09:52 AM
Caro jorge,

Qual é o comando para executar esta aplicação?

Cpts,
FRamos

Olá,

O comando para executar a aplicação é SOMAPER.

Espero que ajude.

luiz_bulla373625
2013-04-22, 06:52 PM
Jhooneyg, qual o comando para somar?