Mostrando postagens com marcador Point Group. Mostrar todas as postagens
Mostrando postagens com marcador Point Group. Mostrar todas as postagens

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!!!

Civil 3D - Tutoriais - 3.01 - Point Styles

Esses dias me pediram como fazer as "cruzetas" da UTM no civil 3d... Bem, podemos usar os COGO POINT para fazer isso, porque não?

Basta criar um estilo que represente a cruz como queremos, inserir um ponto no desenho, sem Z mesmo e fazer um ARRAY dele...

Por exemplo, crie um POINT STYLE que tenha a cruz, clique em:
Toolspace/Settings/Points/Point Styles
botão direito do mouse sobre item "Point Styles":


Se abre esta tela:

Clique a cruz somente, veja o preview... se ficar como nesta imagem, pode clicar a aba Information e dar o nomede CRUZ e depois pode clicar OK.

Agora, clique para criar um "Point Label Style" (um pouco abaixo de onde você clicou para criar o estilo do ponto):

Na aba Layout, você verá que são criados 3 componentes de texto:

Não vamos usar nenhum deles, então pode clicar o botão com um "X" vermelho para apagar os três

Em seguida, clique o botão com Um "A" (se parar o mouse em cima dele, aparece "Create Text Component"

Nele coloque estas propriedades::
General
 Name Norte
 Visibility True
 Anchor Component 
 Anchor Point Middle Left

Text
 Contents N=<[Northing(Um|P0|RN|AP|GC|UN|Sn|OF)]>
 Text Height 2.00mm
 Rotation Angle 000.0000 (d)
 Attachment Middle left
 X Offset 5.00mm
 Y Offset 0.00mm
 Color BYLAYER
 Lineweight ByLayer

Border
 Visibility False
 Type Rectangular
 Background Mask False
 Gap 0.75mm
 Color BYLAYER
 Linetype ByBlock
 Lineweight ByLayer

O mais importante é o "Contents" (para editar ele, clique a linha dele e nela aparecerá um botão com três pontinhos, clique-o). Se você leu o tutorial 1.01 talvez esteja trabalhando com coordenadas locais e em vem do contents ser
N=<[Northing(Um|P0|RN|AP|GC|UN|Sn|OF)]>
será
N=<[Grid Northing(Um|P0|RN|AP|GC|UN|Sn|OF)]>

Note que há uma diferença sutil em qual propriedade queremos...
Se não leu o tutorial que eu falei, deixe a primeira opção


Depois, clique o botão "Create Text Component" outra vez (Aquele do "A"...)
nele coloque as seguintes propriedades:
General
 Name Leste
 Visibility True
 Anchor Component 
 Anchor Point Top Center

Text
 Contents E=<[Easting(Um|P0|RN|AP|GC|UN|Sn|OF)]>
 Text Height 2.00mm
 Rotation Angle 090.0000 (d)
 Attachment Middle center
 X Offset 0.00mm
 Y Offset 5.00mm
 Color BYLAYER
 Lineweight ByLayer

Border
 Visibility False
 Type Rectangular
 Background Mask False
 Gap 0.75mm
 Color BYLAYER
 Linetype ByBlock
 Lineweight ByLayer

note que trocou o Contents, O Offset (x, y), "os anchor point" e arotação
Simples, não?

Ah, ao editar o Contents, você notará que para sair o texto
E=<[Easting(Um|P0|RN|AP|GC|UN|Sn|OF)]>

a tela precisa estar assim:

Vou deixar você descobrir porque destaquei com uma seta azul o botão...

Por fim, clique todos os OK que precisar....

vá até o Prospector....
(continua)

Point Groups e Estilos

Sabe aquelas horas na pressa que você precisa colocar todos os pontos em seus devidos point groups, para entao cria os devidos point styles e descobre que tem um milhão de descrições diferentes pra fazer?

É, eu passei por isso agora.... peguei um desenho com montes de descriacções, que não batem com as minhas, claro, e tive de fazer isso...

no segundo eu já desisti e escrevi um programinha pra fazer, esta ai:
mais...
;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)
  (
if (vl-catch-all-error-p
    (setq obj (vl-catch-all-apply 'vla-item (list collection name)))
      )
    (
progn (setq obj (vla-add collection name))
       (
set byref_is_new t)
    )
    (
set byref_is_new nil)
  )

  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):
get_or_create, tbn:error-init, aec-adoc, GET_OR_CREATE, tbn:error-restore

pra usar é o de sempre, baixar as lisps extras, colocar tudo num arquivo só e carregar com o APPLOAD

ao usar o comando, ele simplesmente escaneia as descrições dos pontos do civil 3d e vai criando estilos e grupos para cada descrição diferente. no final cada point group tera um estilo e seus pontos filtrados!!!