NOTASERV - Nova versão!!!

0 milhões de comentários
Fala pessoal!!!

E estamos em 2016!!!

Bom, então está na hora de começar as falar das novidades!!!

Estou trabalhando na segunda versão do NOTASERV, plugin para geração de notas de serviço no Civil 3D.

Atualmente, ele consegue extrair a maioria das notas de locação e volumes, mas ainda faltava alguma coisa e, convenhamos, ele não é tão fácil de usar a primeira vista

A primeira novidade é a interface:

Note que só tem a tela inicial. Chega de duas abas!!!

Também não tem a coluna que mostrava o índice da coluna, pois agora, você vê a tabela como ficará na parte inferior.

Para configurar as colunas com número de casas decimais, separador de milhar, etc, temos o quadro da direita. Bem intuitivo, não?

Ao selecionar um nó no quadro da esquerda, terá uma "ToolTip" explicando o que é a propriedade, que ao clicar o botão para adicionar, uma coluna é criada no quadro abaixo.

Ah, vai ser possível salvar o template da tabela após configurar!!! Veja a barra de ferramentas do topo!!

Bem, agora as propriedades!!!

Antes, o programa listava os alinhamentos, seções (meio bagunçado), perfis e pontos dos corredores.

Agora, ele irá processar os pontos e links, separando por lado (direito, esquerdo, centro), assim dá pra fazer a nota do DNIT (!!!) e também irá processar as shapes do corredor, para que se possa extrair quantitativos de maneira mais eficiente!!

Dos perfis, muitas propriedades foram acrescentadas, tratando o perfil por seus PIVs ou estacas.

No alinhamentos, é possível tratar pelas estacas cheias ou intermediárias, pelas estacas de geometria ou mesmo superelevação

Estou trabalhando duro para deixar o programa TOP, então se tiver alguma sugestão, a hora é essa!!!

Se você tem alguma ideia legal, me avisa, licenças grátis para idéias geniais!!!

Aluguel de licenças

0 milhões de comentários
Bom dia pessoal!!!

Ano quase acabando então feliz ano novo!!!

Ah, não esqueça da promoção de natal, está bombando!!!

Este post é para perguntar a vocês sobre os plugins que disponibilizo. Bem, atualmente eu vendo as licenças deles e muita gente pensa que eles são um tanto "caros". Bem, não vou entrar nesta discussão, as vezes eu mesmo acho isso. Então estou estudando com oferecer assinaturas dos mesmos, por valores bem aceitáveis.

Por exemplo, na enquete que está aí do lado direito da página, você pode escolher as opções que você aceitaria para usar o EXPGE, que exporta/importa o desenho do AutoCAD para o Google Earth.

Muitas pessoas usam ele demostrativo, com limitação e isso é o suficiente, mas as vezes a pessoa precisa dele uma única vez para exportar muitas coisas de uma vez só, mas já usou a sua licença demo e não tem outra saída a não ser comprar...

Já pensou se você pudesse usar essa única vez por um precinho bem camarada, tal como esses da enquete?

Então, se você gostou da idéia, vote!!! Preciso saber o que pensam disso, se quiserem, podem comentar neste post com sugestões ou críticas, ok?


Programinha - Mover label de pontos em polilinhas

0 milhões de comentários
Bom dia!!!

Hoje vou postar um pequeno programa que me quebra um baita galho!!!

É o seguinte, em poligonais onde queremos mostrar os vértices numerados no civil 3d, normalmente usamos o comando CREATEPTPLYLNCTRVERTAUTO, que cria os pontos automaticamente nos vértices da polilinha.

Até aí tudo bem, veja como fica:
Percebe que a label do ponto fica por cima da linha?

Bem, dá pra criar um estilo que põe o texto mais pra fora, mas isso nem sempre fica bom. E você acaba "estrechando" manualmente a label. Mas e se tiver uns 200 pontos? Aí a coisa começa a ficar chata e você manda o desenhista fazer... hehehehe

Bom, é para isso que este programinha serve, veja:

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.Civil.DatabaseServices

Public Class MovePtlabels
    'pra facilitar em muitos comandos:
    Public Function ED() As Editor
        Return DOC.Editor
    End Function

    'devolve o documento atual
    Public Function DOC() As Document
        Return Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
    End Function

    'move as labels dos pontos pela bissetriz das arestas
    <commandmethod commandflags.nopaperspace="" ovecogolabels="">
    Public Sub MoveCogoLabels()

        'selecione uma polilinha ou ecerra o comando:
        Dim peo As New PromptEntityOptions(vbNewLine & "Selecione a polilinha")
        peo.SetRejectMessage("Somente Polilinh")
        peo.AddAllowedClass(GetType(Polyline), True)
        Dim per As PromptEntityResult = ED.GetEntity(peo)
        If per.Status <> PromptStatus.OK Then Exit Sub

        'informe uma distância ou encerra o comando:
        Dim pdo As New PromptDistanceOptions(vbNewLine & "Indique a distância a afastar")
        Dim pdr As PromptDoubleResult = ED.GetDistance(pdo)
        If pdr.Status <> PromptStatus.OK Then Exit Sub

        'inicia a transação
        Using tr = DOC.TransactionManager.StartTransaction
            Try

                'obtem a polilinha selecionada
                Dim pl As Polyline = per.ObjectId.GetObject(OpenMode.ForRead)

                'determina se a polilinha está em sentido horário ou antihorário
                Dim s As Double = 0
                For i = 0 To pl.NumberOfVertices - 1
                    Dim pa = pl.GetPoint3dAt(i Mod pl.NumberOfVertices)
                    Dim pb = pl.GetPoint3dAt((i + 1) Mod pl.NumberOfVertices)
                    s += pa.X * pb.Y - pb.X * pa.Y
                Next

                'módulo do vetor entre a coordenada do vértice e a coordenada final da label
                'leva em conta o sentido da polilinha, para sempre mover para fora dela
                Dim f = If(s > 0, -1, 1) * pdr.Value

                'itera nos vértices:
                For i = 0 To pl.NumberOfVertices - 1
                    Dim pt As Point3d = pl.GetPoint3dAt(i)

                    'procura um cogopoint nas coordenadas deste vértice
                    'aqui podia criar uma query num pointgroup, mas fica como exercício
                    For Each cid In Autodesk.Civil.ApplicationServices.CivilApplication.ActiveDocument.CogoPoints
                        Dim cogo As CogoPoint = cid.GetObject(OpenMode.ForWrite)
                        If cogo.Location <> pt Then Continue For

                        'se encontrou um cogopoint, calcula a bissetriz das arestas do vértice
                        Dim pAntes As Point3d = pl.GetPoint3dAt(If(i = 0, pl.NumberOfVertices - 1, i - 1))
                        Dim pDepois As Point3d = pl.GetPoint3dAt((i + 1) Mod pl.NumberOfVertices)
                        Dim vAntes As Vector3d = pAntes.GetVectorTo(pt).GetPerpendicularVector
                        Dim vDepois As Vector3d = pt.GetVectorTo(pDepois).GetPerpendicularVector

                        'reseta a posição da label antes de reposicionar:
                        cogo.ResetLabel()

                        'move a label para a nova posição
                        cogo.LabelLocation = pt.Add(f * vAntes.Add(vDepois).GetNormal)

                    Next
                Next
                'aplica as alterações e faz regen
                tr.Commit()
                ED.Regen()
            Catch
                MsgBox(Err.Description)

            End Try
        End Using
    End Sub
End Class


Eu usei o Visual Studio 2010 para compilar a dll e compilei para a versão 2014, que deverá funcionar também no 2015 e 2016.

Agora, é carregar com o NETLOAD e usar, veja o resultado:

Percebe a diferença?

É isso!!!!

Fica com exercício criar um algorítimo mais eficiente para encontrar cogopoints nos vértices da polilinha.

Veja que o programa tem um controle de erros (try, catch) para evitar erros fatais.

LinkWithin

Related Posts Plugin for WordPress, Blogger...