Tutoriais 1.02 - Civil 3D - Expressions

Um tutorialzinho pra descontrair, heheheh
já que tá aparecendo outro concorrente, hehehe

O que eu acho ótimo, porque essa dica eu meio que "roubei" dele e tava na hora de alguem mais dizer "comofas" em vez de perguntar "comofas"

Bom, vamos lá, essa dica vai ajudar a você aprender um pouquino sobre expressions e qual é a sua utilidade (ou uma delas).

Eu vou criar uma label que informa a cota do degrau existente entre a geratriz interna a jusante de um tubo e a cota de fundo da estrutura a jusante. Pra puxar a brasa pra minha sardinha, claro.

Bom se você utiliza o C3DRENESG, pode usar essa dica, pois ele implementa a propriedade "dedgrau" nos tubos inclusive disponibiliza uma piperule que atualiza esse valor, senão, siga este link, para saber como criar uma propriedade extra no tubo ou estrutura.

Supondo que você use o C3DRENESG, vamos lá!! se não usa, experimente, você vai gostar!!!

bom, tenha uma rede, vou pegar um trecho de uma travessia, com a tubulação no eixo da via:


perfil:

como aparece no demosntrativo do C3DRENESG

A idéia é criar uma label assim:


Vamos lá, Toolspace, Settings, Pipes, Label Styles, Plan Profile. Botão direito neste item e escolha "New"

Na tela que abre, vamos até a aba layout e insira um novo componente de linha.
A propriedade que vamos trabalhar é esta marcada no retângulo vermelho:


Note que eu escrevi "deltax" ali.... você já vai entender porque, por enquanto, deixe em zero mesmo. Só mude o angulo para 225 graus e o comprimento para 10mm, como na imagem.

Em seguida, crie um componente de texto, pendurando ele no endpoint da linha:


Para o Contents (retângulo laranja), coloque o valor do degrau, desde que, adivinhe!!! use o C3DRENESG, senão coloque qualquer coisa mesmo. Já para p campo rotação (retângulo vermelho) por enquanto deixe em zero mesmo.

clique os OK que precisar e volte ao toolspace e clique em New Expression:

Vai abrir a tela abaixo:

Note que o botão selecionado possui todas as propriedades disponíveis para o tubo. Assim, você não precisa digitar o que você precisa, basta clicar da lista.

No caso, a expressão ficará assim:
({2D Length - Center to Center}-1)/({Drawing Scale Conversion}*2)

Onde :
{2D Length - Center to Center}, é o comprimento do tubo
{Drawing Scale Conversion}, é a escala de conversão

É assim mesmo, com "{}". Como eu disse, clique o botão destacado e seleione algo, aí voce entende!!

Ah, chame a expressão de "deltax"...

Explicando: Esta expressão será usada para calcular a posição relativa da label de tubo em cima do tubo, sendo o "Delta X" no sentido do comprimento e "Delta Y" no sentido transversal que aparece aqui:


Já pegou o esquema, né? se não pegou, clique os OK que precisar e voltea editar o estilo de label que estávamos criando, abra o componente de linha e veja.

Não é que o "deltax" fica disponível para colocar no "Delta X", como na figura??

É!!!! legal né!!!

Mais ainda vamos fazer mais uma expressão, então clique os OK que precisar e volte a criar uma nova expressão:


Vai ficar assim:

Configura a saída para "Angle", como na figura acima e coloque a expressão
{Pipe Start Direction in plan}+pi/4

O pi/4, ou 45 graus, é para o texto ficar na horizontal, ja que a nossa linha terá um angulo de 225 graus.Volte a editar a label que estávamos criando e veja (olhe o campo Angle):


É, eu economizei algumas imagens... os servidores do oráculo agradecem...

Bom, é só definir o campo "Rotation Angle" para a expressão "anularot":


Clique os OK.....

Aí adicione uma label num tubo qualquer com o comando AeccAddNetworkPartPlanLabel (heheheh, digita aí!!!, ou menu Pipes/Add Pipe Network Labels/Single Part Plan)

Talvez seja necessário usar o Properties do autocad para trocar o estilo da label para este que criamos e pronto, vai ficar assim:


Simples né? Veja que deixei selecionado a label, para que você veja que não "estrechei" o ponto de inserção da label para perto do pv.... ele vai sozinho.

Sacou pra que serve as Expressions?

Uma utilidade é criarmos pontos de inserção diferentes para as labels, outra é se voce tem uma caixa de ligação enterrada, verá que não existe uma label para dar a profundidade, então podemos criar uma expressão assim para las labels de estrutura:
{Surface Elevation At Insertion Point}-{Sump Elevation}

Agora, talvez você queira aprender a colocar labels mais bonitas na superelevação em planta, veja

E claro, essa dica eu fiz pra promover o C3DRENESG, então não deixe de testar ele, que inclusive atualizei ontem e coloquei umas coisas legais na planilha.

Novos Programas - link

Lembra do programa que comentei aqui e aqui, segue o link: tbn2
Aguardo seus palpites!!!

Ah, roda no civil 3d 2011, autocad 2011

Demais versões, me mande um email

Explodir Spline em vb.net

Lembra daquele programinha para explodir spline? Que tal fazer isso em VB.NET? Veja:
(ah, usei o VISUAL STUDIO 2010 EXPRESS EDITION e AUTOCAD 2011)

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.ApplicationServices.Application
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.DatabaseServices.OpenMode


Public Module TBN2
''ponteiro para a transacao atualmente aberta
 Public CurrentTrans As Transaction = Nothing

''funcoes internas
''editor, é como o utility do vba
    Public Function ED() As Editor
        Return AcadDOC.Editor
    End Function

''documento atual, é como do thisdrawing
    Public Function AcadDOC() As Document
        Return DocumentManager.MdiActiveDocument
    End Function

''retorna o banco de dados do desenho atual
    Public Function DB() As Database
        Return AcadDOC.Database
    End Function

''adiciona uma entidade criada ao modelspace
    Public Function AddToModel(ByVal e As Entity) As ObjectId
        Dim bt As BlockTable = DB.BlockTableId.GetObject(ForRead)
        Dim btr As BlockTableRecord = bt(BlockTableRecord.ModelSpace).GetObject(ForWrite)
        AddToModel = btr.AppendEntity(e)
        CurrentTrans.AddNewlyCreatedDBObject(e, True)
    End Function

''inicia uma transacao com o desenho atual
    Public Sub StartTR()
        If CurrentTrans Is Nothing Then CurrentTrans = AcadDOC.TransactionManager.StartTransaction
    End Sub

''funcao principal: Spline2PLine
 <commandmethod("spline2pline", commandflags.usepickset)>
   Public Sub SPLINE2PLINE()
''inicia a transacao
        StartTR()
        Try
''pede a selecao das splines
            Dim ssr As PromptSelectionResult =
                ED.GetSelection(New PromptSelectionOptions,
                                New SelectionFilter(New TypedValue() {New TypedValue(0, "SPLINE")}))
            If ssr.Status <> PromptStatus.OK Then Exit Try

''pede a precisao
            Dim PPI As New PromptIntegerOptions(vbLf & "Qual a precisão?")
            PPI.UseDefaultValue = True
            PPI.DefaultValue = 10
            PPI.AllowNegative = False
            PPI.AllowZero = False
''se nao for informado, sai
            Dim ppr As PromptIntegerResult = ED.GetInteger(PPI)
            If ppr.Status <> PromptStatus.OK Then Exit Try

''em toda a selecao, repita:
            For Each ID As ObjectId In ssr.Value.GetObjectIds
                Dim S As Spline = ID.GetObject(ForWrite)
                Dim C As Entity = S.ToPolylineWithPrecision(ppr.Value)
                AddToModel(C)
            Next
'' em caso de erro na execucao:            
        Catch
''mostra o erro na linha de comando
            ED.WriteMessage(Err.Description)
        End Try

''fecha a transacao e informa ao autocad, para manter as alteracoes no banco de dados
        CurrentTrans.Commit()
    End Sub

End Module

Copie para um novo projeto do visual studio, carregue as referências:
acmgd.dll e acdbmgd.dll do autocad, compile e teste!!!



Dica sobre estilos do civil 3d

Outro dia vi um comando do civil 3d num site grigo que achei muito interessante, o comando é AECCIMPORTSTYLESANDSETTINGS, é é isso tudo aí...

A idéia é importar TODOS os estilos de um desenho para outro. Legal né?

Funciona assim: abre o desenho que receberá os estilos. Cerifique-se de que aquele que possui os estilos esteja fechado. Chame o comando AECCIMPORTSTYLESANDSETTINGS na linha de comando. Informe o caminhoccompleto e pronto. Um ououtro REFRESH no settings e os estilos estarão lá!!

Como digitar o caminho ou mesmo esse comando todo, experimente salvar esta lisp:

(DEFUN C:ISTYLES (/)
  (
IF (SETQ FILE (GETFILED "SELECIONE UM ARQUIVO"  "" "DWG" 4))
    (
COMMAND "AECCIMPORTSTYLESANDSETTINGS" FILE)
 ))



Salve e carregue com o APPLOAD, depois chame a lisp na linha de comando: ISTYLES

ah, o site onde vi é este