Civil 3D - Point Group para todas as descrições

Volta e meia você precisa criar point group para as descrições dos pontos, certo? Seja porque você não gosta do "Description Key Sets", seja porque você nem saiba o que é isso, hehehe

A idéia basicamente é que cada point group contenha somente os pontos de uma determinada descrição, o que facilita na hora de criar estilos e na hora de fazer as superfícies.

Por exemplo, se criamos um point group chamado árvore, podemos definir o estilo deste com um bloquinho que seja uma árvore. O mesmo com postes por exemplo, já imaginou que bacana? Isso simplifica bastante o acabamento do desenho...

Também facilita no mdt, porque nossa superfície pode não precisar de alguns pontos, por exemplo, os de fundo de boca de lobo...

O duro é criar todos esses point groups....

Que tal um lispezinho pra isso? Veja:

;funcao que devolve um item da colecao, cria se necessario
;byref_is_new é passado por referencia, diz se é novo
(defun get_or_create (collection name byref_is_new / obj)
  (
VLAX-FOR O   COLLECTION
    (IF (=  (VLA-GET-NAME O) NAME)
      (
sETQ OBJ O)
    ))

  (
IF OBJ (set byref_is_new nil)
    (
progn (setq obj (vla-add collection name))
       (
set byref_is_new t)
    ))


  

  obj
)

;funcao principal
;escaneia os pontos do desenho e cria point groups com estilos
;para cada descricao de pontodiferente
;autor: neyton luiz dalle molle
;http://tbn2.blogspot.com
;requer inivars.lsp

(defun c:pgforall (/ p desc QueryBuilder pointstyle pointgroup novo)
  ;inicializa o controle de erros
  (tbn:error-init nil)
  ;em todos os pontos do desenho faça
  (vlax-for p (cvlp-get-points aec-adoc)
    (
setq desc (cvlp-get-rawdescription p))
    ;se adescricao esta setada, faça
    (if    (/= desc "")
      (
progn
    ;verifica se existe o pointgroup com este nome
    (setq pointgroup
           (GET_OR_CREATE
         (cvlp-get-pointgroups aec-adoc)
         desc
         'novo))
    ;se for criado um novo, entao
    (if novo
      (progn
        ;constroi o filtro e o estilo
        (setq QueryBuilder (cvlp-get-QueryBuilder pointgroup)
          pointstyle   (GET_OR_CREATE
                 (cvlp-get-pointstyles aec-adoc)
                 desc
                 'novo ))
        ;define as propriedades do novo pointgroup
        

        (cvlp-put-IncludeRawDescriptions QueryBuilder desc)
        (
cvlp-put-pointstyle pointgroup pointstyle)
        (
cvlp-put-MarkerSize pointstyle 0.0003)
      
        (
prompt (strcat "\n" desc))
      )
    )
      )
    )
  )

  ;finaliza ocontrole de erros
  (tbn:error-restore)
)




Link(s) da(s) subrotina(s) usada(s):
tbn:error-init
tbn:error-restore
funções cvl*


Para rodar, primeiro copie o código fonte acima, bem como aqueles indicados nos links das subrotinas, colando tudo num mesmo arquivo de texto. Use o bloco de notas do windows....
Salve com a extensão .LSP.

Agora carregue no Civil 3D, para isso use o comando APPLOAD. Selecione a lisp que você salvou.

Agora é só chamar na linha de comando: PGFORALL

Note que alem do point group, o programa já cria um estilo correspondente.
Se você não quer o estilo, basta remover essa parte do código... Fica como exercício pra você descobrir como!!!

LinkWithin

Related Posts Plugin for WordPress, Blogger...