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

SheetSet

correção 26/07/2011: links quebrados, obrigado Javahes !!!
Bem bem...
Estou as voltas com os programinhas pra variar e tá saindo um que eu considero bem interessante. A idéia é a seguinte: suponha que voce tem lá seus desenhos... uns 50 digamos, com uns 10 layouts cada um, sendo que cada layout possui uma prancha.

Claro que um volume desses é feito por mais de uma pessoa e com certeza existe a chance de se escrever errado alguma informaçao numa folha qualquer.

Como se certificar de que estao todas certas?

Uma das soluções é usar o SHEETSET do autocad e fazer com que o carimbo contenha textos, ou bloco com atributos que tenham FIELDs.

Assim, ao abrir o sheetset, voce pode editar as propriedades ali e as pranchas, que usam fields, se atualizam sozinhas.

Muito legal, não? mas o que é sheetset? o que é field??? ja fiz alguns posts sobre field, veja aqui

Mas vamos ver ver como aplicariamos isso na ideia acima.

Primeiro, você deve ter alguns desenhos com layouts. Nestes layouts colocamos o formato da folha, que poderia ser um bloco, ou melhor ainda, uma XREF.
Vou supor que seja um bloco e que esse bloco, possua atributos e esses atributos são os que preenchem o carimbo. assim:


Sacou?, baixe uma folha A1 de exemplo

Agora, chame o botão SheesetManager:

Vai abrir esta tela:

Escolha New Sheet Set:

Na tela que abriu, escolha "Existing Drawing"

Dê um nome ao sheetset e escolha onde ele será salvo:


Ainda nesta tela, clique o botão "Sheet Set Poroperties"
Abrirá:

Agora, vamos criar algumas propriedades, clique nesta tela o botão "Edit Custom Properties", vai abrir esta tela:


Agora, note que voce pode escolher se uma propriedade é comum para todas as folhas, ou se é específica para um folha, escolhendo no quadro "Owner" se quer que a propriedade seja para o Sheet (folha) ou Sheet Set (todas as folhas).
Vá editando propriedades, uma para cada atributo daquele arquivo que serve como modelo de folha baixe-o se ainda não o fez


Clique OK quando terminar e retorne a tela abaixo. Note que as propriedades que você criou estão disponíveis já:


Clique OK novamente, vocë voltará a tela:


Clique Avançar. Vai cair na tela de adicionar Layouts. Como ainda nao criamos nenhum desenho, Clique Avançar novamente, depois clique Concluir.

Agora crie um novo dwg e insira o bloco do carimbo no layout. Não preencha o carimbo ainda.

Você vai usar o comando EATTEDIT. No atributo Município, clique com o botão direito do mouse sobre a caixa Value:

Vai abrir a tela do editor de field:


Não Abrirá bem assim, mas se você for clicando os itens da esquerda para a direita:
Field Category: SheetSet
Field Name: SheetSet
SheetSet: exemplo
Sheet navigation tree: exemplo
Property: MUNICIPIO

Agora, clique OK e salve o desenho. Por exemplo: d:/exemplo.dwg

Após salver e SOMENTE APÓS SALVER, clique com o botão direito do mouse sobre o layout e clique "Import Layout as Sheet:


Vai aparecer esta tela:


Note que aparece uma lista com o layout selecionado. clique "Import checked"
Depois clique OK.

Agora abra o sheetset novamente:

Vai abrir a tela abaixo, clique com o botão direito do mouse sobre o nome do sheetset, depois clique "Properties"

Na tela que abre, edite o município:

Depois clique OK. Volte ao desenho e chame o REGEN, veja:

Percebe? Imagine que os 5m desenhos usam o mesmo bloco com atributos...

Abora o "crème de la crème". Aquilo que toda hora alguem m pede, um programiha para plotar vários dwgs de uma vez só!!!!


Ah, não precisa de programinha nenhum, use o sheetset!!!! Lembra da tela em que adicionamos o layout no sheetset? Viu o botão "Browse Drawings"

Se você já criou todos os dwg usando o carimbo correto, vai ficar assim:


Vai ficar assim:

Agora clica:

Agora é só esperar!!!!
Quer fazer PDF? escolha PDF, quer DWF escolha DWF!!!!
Ah, você quer PLT!!!!!
Crie uma plotter que so fá plt e escolhe PLT!!!!

Vai funcionar m-a-r-a-v-i-l-h-o-s-a-m-e-n-t-e ( que gay!!! ) bem!!!
desde que, claro, você tenha configurado a ploter, tamanho do papel, penas, etc em cada um dos desenhos!!!!!


Agora.... voê nao disse no começo do post que estava fazendo um programa???

Pois é, tinha até esquecido....

Bom, o programa servirá para você gerenciar os carimbos, sem precisar do sheetset necessariamente, e por exemplo, configurar o papel dessas folhas. Claro que voce pode fazer isso de outras formas e encorajo a você a fazê-lo, mas, se voc&e precisa representar um projeto grande de uma rodovia, ou loteamento por exemplo, pode deixar alguma viewport errada....

Não é raro você esquecer de mover o zoom de uma viewport após fazer o "copy layout/move to end"....
e só descobre na hora de imprimir!!! e tem dados que fica dificil de controlar no sheetset, como pro exemplo as linhas de "REFERENCIA_1" que está no dwg que passei

O programa é este abaixo:

Nele eu consigo:
Gerenciar o conteudo dos atributos das folhas,
Gerenciar as configurações de impressão das folhas
Quais viewports aparecem num layout
O que aparece no viewport, se é alinhamento, seçãoo ou perfil
se for alinhamento, sei as estacas que aparecem, se for perfil, sei seu intervalo, se for seção, quais são. Claro que tudo no esquemático, só para se certificar que o que está escrito no carimbo é o que deveria estar escrito!!!
Vai que tem uma viewport com o alinhamento A das estacas 0 a 10 e está escrito B no carimbo? é péssimo descobrir isso depois de impresso no dia da entrega!!!!

Sem contar que o sheetset guarda algumas surpresas as vezes... mais vou deixar você gostar dele pra imprimir, hehehehe

depois voce compra o meu programa, hehehehe

Depois eu falo mais sobre ele... e posto o link pra download do demonstrativo

por enquanto, gostaria que vocês avaliassem a idéia e mandassem sugestões

Mais Fields - Nome do Layout

Que tal incluir um texto no carmbo da prancha, que contenha o nome do layout em que ele está? Legal né? Com Fields é fácil, veja:

(defun C:nlayout (/ thisdrawing paper pt alt utility)
;carrega as VLs
  (vl-load-com)

  (
setq
;pega o documento atual:
    thisdrawing (vla-get-activedocument
          (vlax-get-acad-object))
;pega o layout:
    paper  (vla-get-paperspace thisdrawing)
;funções do tipo "get alguma" coisa:
    utility (vla-get-utility thisdrawing)
;pede a seleção de um texto:
    pt      (vla-getpoint
          utility
          nil
          "\nClique um ponto:")
    alt     (vla-getdistance
          utility
          nil
          "\nAltura do texto:"))

;cria um text no paper, com o nome do layout:
  (vla-addtext paper
    (strcat "%<\\AcObjProp Object(%<\\_ObjId "
        (itoa (vla-get-objectid
            (vla-get-layout paper)))
        ">%).Name \\f \"%tc1\">%")
    pt
    alt
)
  (
princ))


Assim, você pode numerar os layouts e ter certeza de que no carimbo estará certo o texto. Detalhe: se você usar depois o "Copy/Move" num layout ara criar a próxima página (se não faz assim, experimente clicar com o botão direito do mouse sobre a aba do layout atual e usar o Copy/Move), esta Field será atualizada para usar o nome da página correta!! E se renomear algum layout, a field se atualiza sozinha, muito legal, hehehe!!!

Para usar é simples, carrega a lisp com APPLOAD e digita NLAYOUT na linha de comando:

Como tabelar pontos

Esses tempos atráz, me pediram um programa que criasse uma tabela com as coordenadas dos pontos de um desenho... Bem aí está:
ver isso!!!

(vl-load-com)
(
defun c:tabelar (/ ss NumRows InsertionPoint NumColumns RowHeight ColWidth
          model table nRow id ent vla
)
  (
setq ss             (ssget ":S" '((0 . "POINT")))
    NumRows        (sslength ss)
    InsertionPoint (vlax-3d-point 
                         (getpoint "\nEntre com um ponto"))
    NumColumns 3   ;nome, x, y -> 3
    RowHeight 2
    ColWidth 10
    model (vla-get-modelspace 
                (vla-get-activedocument (vlax-get-acad-object)))
    table (vla-addtable model InsertionPoint
        (1+ NumRows) ;uma linha pro titulo...
                     ;ou vai depender do estilo da tabela
        NumColumns RowHeight ColWidth)
    nRow 0)
  (
repeat NumRows
    (setq ent (ssname ss nRow)
      vla (vlax-ename->vla-object ent)
      id  (vla-get-ObjectID vla)
      nRow (1+ nRow))
    

    ;escreve o nº do ponto na coluna 1
    (vla-Settextstring
      table
 ;a tabela em si
      nRow  ;linha
      0     ;coluna
      (* nRow 3) ;"id" da celula
      (itoa nRow) ;conteudo da celula
      )
    

    ;escreve o X na coluna 2:
    (vla-Setformula
      table
 ;a tabela em si
      nRow  ;linha
      1     ;coluna
      (+ 1 (* nRow 3)) ;"id" da celula
      (strcat ;cria uma "field" q mostra o X
    "%<\\AcObjProp Object(%<\\_ObjId "
    (itoa id)
    ">%).Coordinates \\f \"%pt1\">%"))
    

    ;escreve o Y na coluna 3:
    (vla-Setformula table nRow 2 (+ 2 (* nRow 3))
      (
strcat ;cria uma "field" q mostra o Y
    "%<\\AcObjProp Object(%<\\_ObjId "
    (itoa id)
    ">%).Coordinates \\f \"%pt2\">%")))
  ;atualiza a tabela:
  (vla-GenerateLayout table))


Para usar é simples, carrega a lisp, desenha alguns pontos ( comando POINT ) e chama a lisp na linha de comando: TABELAR
Será pedido um ponto de inserção e será criada uma TABLE do autocad com as coordenadas X e Y desses pontos.

Bem bobinho este programa, eu sei, mas servirá de exemplo para quem quer saber como usar FIELD e desenhar TABLE com lisp.