PipeNetworks - Labels Condicionais

Opa!!, então, já que eu postei uma lisp para corridors, que tal uma para as pipenetworks agora?

Bom, a idéia é a seguinte: Você desenhou uma pipenetwork, mó grande, aí adicionou labels com o comando AeccAddNetworkPlanLabels e teve de editar alguns tubos, ou estruturas... Em fim..., mas as labels de alguns se perderam... é só usar o mesmo comando certo? Mais ou menos... Se fizer isso, os elementos que já possuem labels terão duas labels após a execução do comando... Até aí não é muito problema, mas se você "strechou" alguma, terá dois textos visíveis na tela, aí, só apagando manualmente...

É serviço pro estagiário, hehehehe

Me pergunto, porque este comando não tem um filtro...
Em fim, uma lisp para colocar label só nos elementos que não tem as benditas:
mais...
;função que obtem o ponteiro para a pipenetwork que contem
;o objeto "part", que pode ser um Pipe ou uma Structure
(defun ps->get-pipenetwork (part / AcApp PipeApp versao
                PipeDoc net coll pipenetwork
)
  ;primeiro, obtem a collection de networks
  ;para isso, pega o ponteiro para o documento
  ;PipeDocument atual:
  (setq    AcApp (vlax-get-acad-object)
    versao  (vla-get-version AcApp)
    versao  (vl-position (substr versao 1 4)
          '("18.0" "17.2" "17.1" "17.0"))
    versao  (nth versao '("7.0" "6.0" "5.0" "4.0"))
    PipeApp (vla-GetInterfaceObject AcApp
          (strcat "AeccXUiPipe.AeccPipeApplication."
              versao))
    PipeDoc (vla-get-activedocument PipeApp)
;agora vê que tipo de objeto é:
    coll    (if (= "AeccDbPipe"
               (vla-get-objectname part))
          "Pipes"
          "Structures"
)
;pega seu objectid:
    partid  (vla-get-objectid part))

;em todas as pipenetworks do desenho atual
;procure na coleção correta, qual contem um objeto
;de id igual ao informado:
  (vlax-for net (vlax-get-property Pipedoc 'Pipenetworks)
    (
vlax-for obj (vlax-get-property net coll)
      (
if (= partid (vla-get-objectid obj))
    (
setq pipenetwork net))))
;devolve a pipenetwork encontrada:
  pipenetwork)


;verifica se o objeto tem alguma label ou não
;se nao tiver, adicione uma:
(defun ps->labelme (obj / s2)
  (
if (= 0 (vla-get-count (vlax-get-property obj "Labels")))
    (
progn
      ;preselecione o objeto:
      (setq s2 (ssadd (vlax-vla-object->ename obj) (ssadd)))
      (
sssetfirst s2 s2 )
      ;adicione a label:
      (command "AeccAddNetworkPartPlanLabel")
      (
sssetfirst nil nil))))

;função principal:
(defun c:pslabel (/ ss part net)
  ;obviamente, precisará do vl-load-com:
  (vl-load-com)
  ;inicia o controle de erros:
  (tbn:error-init '(("cmdecho" 0) nil))
  ;pede a seleção de um Pipe ou Structure:
  (prompt "\nClique em um tubo ou estrutura")
  (
setq ss      (ssget  ":S"
            '((0 . "aecc_pipe,aecc_structure")))
    part    (vlax-ename->vla-object (ssname ss 0))
  ;determine em que pipenetwork o objeto selecionado está:
    net     (ps->get-pipenetwork part))

  ;em todos os tubos desta pipenetwork,
  ;adicione label se não tiver:
  (vlax-for obj (vlax-get-property net "Pipes")
    (
ps->labelme obj))

  ;faça o mesmo em todas as estruturas:
  (vlax-for obj (vlax-get-property net "Structures")
    (
ps->labelme obj))

  ;restaure o controle de erros do cad:
  (tbn:error-restore))


Link(s) da(s) subrotina(s) usada(s):
tbn:error-init, tbn:error-restore
Como de costume, copie ela e salve num arquivo de extensão LSP. Claro que você deve copiar tambem a lisp de controle de erros (aqui), ou comentar as linhas que fazem referência a ela.

Note que, com alguns poucos ajustes, dá até para colocar labels específicas, por exemplo, nos tubos, colocamos as labels de costume, com o comprimento, declividade, etc, mas alguns projetos pedem que coloquemos as labels de cota no final do tubo, por exemplo:

Vê a label de cor verde? aqui no Paraná, a sanepar exige que, se num poço de visita o tubo chegue a mais de 70cm da cota de fundo do poço, se faça um tubo de queda.

Update multiplos corridors de uma vez só

Faz tempo que não posto uma lisp, então pra desenferrujar um pouco, que tal fazer um update em vários corridors ao mesmo tempo?

(DEFUN C:UPDCORRIDOR (/ SS ENT VLA)
  (
vl-load-com)
  (
setq ss (ssget '((0 . "AECC_CORRIDOR"))))
  (
REPEAT (SSLENGTH SS)
    (
SETQ ENT (SSNAME SS 0)
      VLA (VLAX-ENAME->VLA-OBJECT ENT))
    (
VLAX-INVOKE-METHOD VLA 'Rebuild)
    (
SSDEL ENT SS)))



Se você, como eu, cria todas as interseções separadas do corridor principal, para nao demorar os rebuilds quano se está projetando, esta lispezinha vai ser muito útil no final, porque ficar dando rebuild um a um é massante!!!

Experimente, ela é bem simples, só copie, salve e carregue que já dá para sair usando!!!

Terraplenagem - Diagrama de massa

Opa, demorou mas estamos aí, mais um post com um novo programinha!!!

Este programa é o MASSDIAG (ainda estou escolhendo um nome, heheh)
Ele servirá para calcular o diagrama de massa de terraplenagem. É, algo como o diagrama de bruckner ou o "mass haul" do civil 3d, aliás, é para rodar adivinha em que programa!!! Claro, no civil 3d!!

Imagine a situação, você um loteamento, grande, pequeno, não importa. E está fazendo a terraplenagem. Fez ai o MDT, depois modelou as estradas, quadras, etc. E resultou que você tem uma superfície de volume, com as manchas de corte e aterro.

Bem, no civil 3d, você pode desenhar os polígonos que limitam as áreas de corte e aterro e com o comando REPORTSURFBOUNDEDVOLUME, pode calcular o volume contido por estes polígonos. Até aí beleza, mas e se a área for meio irregular, ou a massa é mal distribuida dentro do polígono, onde fica o centro de massa?

É, faltou isso no civil 3d...

E as vezes, ele teima em dar erro e não calcula o volume, e pior ainda, as vezes ele calcula errado!!!! Sim, eu ja peguei isso....


Bom, supondo que tenha dado certo, eu tenho ai algo em torno de 10 cortes e 14 aterros, ou, como um amigo meu no rio de janeiro, tem lá seus 90 cortes por 96 aterros....

Imagine ainda que você disponha de uma caixa de empréstimo ou um botafora se for o caso.

Agora, planilhando isso tudo, cortes em linha, aterros em coluna, temos uma senhora tabela, certo?

por exemplo:








O que é melhor, pegar todo o volume do corte 1 e jogar no aterro 1, ou um tanto do corte 1 vai para o aterro 1, outro tanto para o aterro 2...
é já entendeu né?

Este é o típico problema dos transportes da programação linear

Se você pesquisar um pouco, verá que não é tão complicado, e se pesquisar mais um pouco, verá que o excel da Microsoft, tem o solver, que faz a distribuição para você.

Só um pequeno problema, você terá de digitar tudo nele...

Ah, não esquecendo, o número de células que podem variar não é infinito e no caso do excel 2003, é abaixo do 90x90.

Supondo que o solver resolva a sua dstribuição, ainda terá o problema de desenhar as setas no cad, indicando os caminhos da sua distribuição ( se é que você vai fazer isso, claro)

Veja a solução:

Primeiro, importamos para a tabela do MASSCALC, e obtemos:









Calcule com o solver, verá que dá isso:




Mas e para desenhar no cad? bom o solver já fez o que podia, agora é com você!!!

Claro que o MASSCALC pode fazer isso, inclusive estou captando idéias, do que mais ele deve fazer....

Ah, o exemplo é bem simples, mas demonstra as possibilidades do programa...

Gostaria de experimentar?
baixe ele aqui
Amanhã eu posto um exemplo em dwg

Quer contribuir de alguma forma?
mande-me um email!!!

mlh2 - malha de coordenadas

Você viu este comentário (do usuário anônimo)?
Se você tentou usar a lisp mlh2 postada aqui onde mostro o fonte dela e não conseguiu fazer ela funcionar, experimente usar a versão já compilada
Note que a versão compilada não é EXATAMENTE a mesma que a do fonte, pois os posts são de datas bem distantes uma da outra... sendo assim, algumas correções foram feitas..., mas no geral era para funcionar...

em fim, use o vlx que funciona, estou usando ele aqui e não tive problemas

agora se você concorda com o usuário anônimo, bem... se não acha que ela esta boa do jeito que está, faça a sua versão, pode até usar a minha como base, eu terei prazer em postar aqui a sua solução!!! ganha até um brinde se o fizer!!!

LIGAPROF - platos interligados a greides

Como você faz a terraplenagem dos lotes de uma quadra? Com polilinhas que tem elevações e que definem os platôs de cada lote?
E como você lê as cotas que devem ficar essas polilinhas? no perfil de greide do alinhamento da rua?

E quando você altera esse greide, o que você faz? altera a cota destes platôs manualmente? Muito bem, então você faz como eu fazia!!! hehehe.

E que tal se ao alterar o greide essas polilinhas se alterassem sozinhas? Já pensou que legal?

É!!! Seus problemas acabaram!!! hehehe
Saiu do forno a lisp LIGAPROF.VLX que faz exatamente isso!! Experimente, veja se será útil para você também... Tenho certeza que as superficies de terraplenagem de quadras serão bem mais interessantes depois disso!!!

c3drenesg - atualização

Muitas atualizações no programa, tais como quadro de erros, propriedades do cálculo nas labels por exemplo, a vazão e o DEGRAU podem aparecer nas labels em planta, ou nas bandas dos profileviews, veja

Veja a label "Depth", a label da vazão...

Adicionei também um comando onde você seleciona 2 elementos, em seguida é calculado o caminho na pipenetwork que conecta estes elementos e você pode desenhar as estruturas e tubos intermediárias no perfil. Facilita, porque não precisa selecionar um a um.

Agora tabém é possível calcular galerias duplas, e logo galerias celulares.


Bom, tem mais coisa, baixe o programa e leia o log de atualizações no help!!!

Coeficiente de manning e NET API

É, parece que não teve interessados neste post, mas tudo bem...

O problema consistia em definir as propriedades de tubos e estruturas (as pipenetwork do civil 3d). Propriedades como o Coeficiente de Manning via API do Civil 3D...

o interessante que no 2008 e 2009 a api COM dá conta disso na boa, por exemplo:

Sub DefManning()
Dim tubo As AeccPipe
ThisDrawing.Utility.GetEntity tubo, pt, "Selecione um tubo"
tubo.PartDataRecord.Find("ACMan").Tag = 0.015
MsgBox tubo.PartDataRecord.Find("ACMan").Tag
End Sub

Mas no 2010 ".Tag" é read only... é... que beleza né? Obrigado autodesk!!! foi muito legal da sua parte isso!!

Bem, Bem, mas o 2010 tem API .NET!!! Opa, Isso sim!!!

Mas... ela não faz tudo o que a API COM faz, e algumas coisas ainda faz errado...
Em fim, em .NET eu posso fazer:
tubo.PartData.GetDataFieldBy("ACMan").Value = 0.015

Veja completo...

Imports Autodesk.Civil.PipeNetwork.DatabaseServices
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Microsoft.VisualBasic
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime

Public Module c3d2010
_
Public Sub test()
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = doc.Editor
Dim ts As Transaction = doc.Database.TransactionManager.StartTransaction()

Dim pipeid As ObjectId = ed.GetEntity( _
New PromptEntityOptions(vbNewLine & "Select Pipe:")) _
.ObjectId

Dim fieldname As String = ed.GetString( _
New PromptStringOptions(vbNewLine & "tag:")) _
.StringResult

Dim value As Double = ed.GetDouble( _
New PromptDoubleOptions(vbNewLine & "value:")) _
.Value

Dim tubo As Pipe = ts.GetObject(pipeid, _
Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite)

Dim pf As PartDataField = tubo.PartData.GetDataFieldBy(fieldname)
Dim oldval As Double = pf.Value

pf.Value = value

ts.Commit()

ed.WriteMessage(vbNewLine & "New=" & pf.Value & _
vbNewLine & "Old=" & oldval & _
vbNewLine & "real value=" & _
tubo.PartData.GetDataFieldBy(fieldname).Value)
End Sub

End Module


Sim, posso!!! mas não funciona!!!!
Huahuahuahuahuahuahua!!!

Após muito quebrar a cabeça, aqui e aqui, usando a ideia de algumas pessoas, e fazendo uns testes, acendendo uma vela, e fazendo um despacho na esquina, descobri que era possível alterar o valor do coeficiente de manning ( e de qualquer outra propriedade ) se esta tivesse uma unidade de medida.

Mas .Units na API NET é read only, certo... na API COM é read-write... vai entender...

então olha só o tamanho da lambança que tive de fazer:

Veja completo...

Imports Autodesk.Civil.PipeNetwork.DatabaseServices
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Microsoft.VisualBasic
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime

Public Module c3d2010
_
Public Sub test()
Dim NEW_UNITS As String
Dim civildoc As CivilDocument = CivilApplication.ActiveDocument
If civildoc.Settings.DrawingSettings.UnitZoneSettings.DrawingUnits = _
Autodesk.Civil.Settings.DrawingUnitType.Meters Then
NEW_UNITS = "m"
Else
NEW_UNITS = "ft"
End If

Dim acaddoc As Document = Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = acaddoc.Editor
Dim ts As Transaction = acaddoc.Database.TransactionManager.StartTransaction()

Dim pipeid As ObjectId = ed.GetEntity( _
New PromptEntityOptions(vbNewLine & "Select Pipe:")) _
.ObjectId

Dim tuboNET As Pipe = ts.GetObject(pipeid, _
Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite)

Dim tuboCOM As AeccPipe = tuboNET.AcadObject

Dim PF_COM As AeccPartDataField = tuboCOM.PartDataRecord.Find("ACMan")
Dim OLD_UNITS As String = PF_COM.Units
PF_COM.Units = NEW_UNITS

Dim PR As PartDataRecord = tuboNET.PartData
Dim PF_NET As PartDataField = PR.GetDataFieldBy("ACMan")
PF_NET.Value = 0.015
tuboNET.PartData = PR
PF_COM.Units = OLD_UNITS
End Sub

End Module


É um mix de uso da API COM e API NET:
  1. Com a api COM eu defino temporariamente a unidade de medida da propriedade "ACMan" para metros ou pés (veja que se o desenho estiver em pés, e eu definir como metros o ACMan, vai haver uma conversão de valor e vai dar errado).

  2. Depois com a API NET, eu defino o valor numérico do "ACMan"

  3. Por fim, redefino a unidade de medida de "ACMan" com a API COM



Xunxo legal né?
A solução inicial você pode ver no forum da autodesk, aqui, você pode ver o mesmo (obrigado por postar os créditos)

Isso tudo aí, estou usando no C3DRENESG

Ah, como ninguem consegiu, está encerrada a promoção, hehehe

Civil 3d 2010 - menus classicos

Respondendo a dúvida que veio pelo chat: Como fazer aparecer os menus clássicos do Civil 3D?

Resposta:


E se você também não gostou muito das ribbons, use o comando RIBBONCLOSE

Agora é so ligar a barra de ferramentas do autocad, clicando com o botão direito do mouse sobre a area onde ficará a barra de ferramentas e na opção Autocad, ligar a barrinha Standard...

SlideViewer - Source Code

Lembra do visualizador de slides? Então teve até um paquito que disse que ele era fraco... e é mesmo... bom estou esperando ele mandar algo melhor pra postar no lugar dele, hehehe

Em todo caso, que tal dar uma olhadela no fonte do bicho?? como será que se lê um slide? Bem, veja se você entende a gambiarra que eu fiz aqui
Gostaria muito de melhorar o programa, corrigir os bugs... emfim, quem estiver disposto a olhar, sinta-se a vontade!!!

Ah, pode usar, mexer, mudar, etc o codigo, mas não é permitido vender sob hipotese alguma este programa e derivações deste codigo sem meu expresso consetimento. Afinal, você o obteve DE DRAÇA. Também não dou garantia alguma do seu funcionamento, hehehe

TEXTFILL - textos vazados

Esses dias fui plotar uns arquivos e as letras sairam todas vazadas... já aconteceu isso com você?
por exemplo, se você definiu o text style para arial e no preview do plot fica assim:


é... essa bagaça me aporrinhou um monte também, hehehe

Para corrigir, use a variavel do sistema TEXTFILL, defina ela em 1
(Digite TEXTFILL na linha de comando)

é isso.. espero que seja útil!!!

Civil 3D - Tutoriais - parte 1.1


Que tal mostrar coordenadas geográficas no nosso desenho??

Bem, bem, vamos lá, mais um totô a caminho, hehehe



Primeiro, temos que saber setar o sistema de coordenadas do nosso desenho, que você já deve ter visto no primeiro tutorial.



Claro que você deve ter ficado se perguntando, mas qual usar?



Bem, que tal NENHUM?? vamos ver como criar o nosso próprio, até porque, não sabemos se o SAD1969 que aparece ali atende nossas expectativas ( e acreditem, não atende ), para isso, vamos usar o comando ADEDEFCRDSYS:





Cada nome de comando que eu vou te contar... continuando, nesta tela:



Clique o botão "Category Manager" e em seguida clique o botão "New",dê um nome nesta tela:





E clique "OK". veja que a nossa nova "Category" está na lista:





Se você receber uma mensagem dizendo que não foi possível adicionar a nova categoria, é porque owindows bloqueou a ESCRITA na pasta "C:\ProgramData\Autodesk". Então você deve dar permissão de escrita antes de usar o comando ADEDEFCRDSYS.




Ah, mas a lista de sistemas de cordenadas está vazia!!!

Calma, vamos criar um clicando o botão "Define", vai aparecer esta tela:





Preencha os dados como na figura acima, e depois clique a aba "Projection", nela defina o "Universal Transverse Mercator", configure o hemisfério para -1 se você está no SUL e 1 se está no NORTE e configure o fuso correto (não sabe o que é fuso? putz, dê uma olhada aqui):



Agora volte para a aba "General" e em "Coordinate System type", clique a opção "Geodetic", em seguida clique o botão "Define". Vai aparecer esta tela:





Nela adivinha!!! Clique "Define" outra vez!!!! Vai abrir esta tela:





Preencha os campos nomo na figura e... sim, clique "Define" nesta tela, vai aparecer outra tela por cima, chamada "Elipsoid Manager", nela clique "Define" mais uma vez:





Veja que deixei todas as telas sobrepostas, para termos uma ideia de onde estamos...

Preencha os dados como na imagem... Aí clique OK, veja que a descrição do nosso elipsóide aparece na lista do "Elipsoid Manager" agora... Clique mais um OK, na tela "Define Datum" a descrição do nosso novo elipsóide aparece no campo "Elipsoid" (seta vermeljha):





Agora, clique a aba "Conversion" e preencha os dados... esses parâmetros voce encontra no oráculo...







Clique OK e repare que o nosso novo Datum está na lista do "Datum Manager". Clique mais um OK e retornamos a tela do "Define Global Coordinate System"







Clique mais um OK (tá chega agora...) e repare que nosso novo sistema de coordenadas aparece na nossa "Category"





Pronto clique close e entre no "Drawing Settings" pelo toolspace novamente, e veja que nas "Categories" aparece a nossa nova categoria!! (É provavel que você tenha q salvar o desenho, fechar o c3d e abrir novamente o arquivo para que a categoria apareça ali na lista)







Agora é só inserir aí um ponto na tela e configurar as labels do mesmo pra ver se deu certo:





E se usarmos o properties:







That is amazing!!!

hehehehe

civil 3d 2010 e .NET

Manja de .NET? manja de civil 3d?

então dê uma olhada neste link

Aquele que conseguir uma resolver a charada, ganha uma lincença do EXPGE, pode ser da maneira que está lá ou outra, desde que o resultado seja o mesmo

lembrando que é preciso adicionar as referncias às dlls do civil: AeccDbMgd.dll e AecBaseMgd.dll, alem das dlls do autocad: acdbmgd.dll e acmgd.dll

o problema é que no 2008 e 2009 para alterar os "Part Data Value", bastava:
tubo.PartDataRecord.Find("parametro").Tag = valor

já no 2010 (ou ao menos deveria ser...):
tubo.PartData.GetDataField("parametro").Value = valor

mas isso não esta funcionando no 2010... então aí está: resolveu a charada, ganhou um EXPGE, hehehe

editado em 19 de setembro de 2009:
como ninguem consegiu, está encerrada a promoção, hehehe, veja aqui

C3DRENESG - atualização

Mais uma atualização do c3drenesg:
04/06/2009

  1. Correção no cabeçalho das linhas, para mostrar o nome do trecho ao exportar a planilha

  2. Adição da Declividade Mínima nas redes de esgoto.

  3. Inclusão de uma calculadora de população
  4. Correção da função que salva os estados das colunas. Apesar de salvar, ela não escondia as colunas desabilitadas.

25/06/2009

  1. Adição de colunas nas planilha de esgoto.

  2. C3dnum agora pode numerar começando em numeros diferentes de 1

  3. Adição do cálculo da velocidade crítica para redes de esgoto, ela é comparada com a velocidade final de escoamento

  4. Adição de tabela de erros. Agora todos os erros são listados numa tabela, facilitando a depuração deles na planilha de cálculo.

  5. Adição de novas equações de chuva.
  6. Alteração no modo como as equações de chuva são escritas, possibilitando adicionar equações de uma forma mais intuitiva e prática, além de aceitar qualquer formato de equação.


03/08/2009
  1. *Adição de dos parametros da rede às propriedades dos tubos e estruturas.

  2. possibilidade de interromper loopings longos

  3. Comando para setar a superficie dos elementos selecionados(em teste)



*Em fase de teste (funciona no 2009 e 2008), com isso é possivel colocar em labels ou no profgileview dados como a vazao escoando e coeficientes de infiltração usados

Importante lembrar que estas alterações foram feitas a pedido de usuários, portanto se você tem algum comentário, sugestão ou crítica, sinta-se a vontade em me mandar um email!!!

Civil 3d - tutoriais - parte 10.3 - Code Sets

Corridors... mais um pouco sobre!!!
Você já criou o corridor, já fez uma interseção e tal, mas, como liga e desliga as linhas do corridor na planta? por exemplo:


Veja, as linhas longitudinais, são as "FEATURE LINES" do corridor, elas são criadas a medida que cada "Point" da Subassembly" passeia pelo caminhamento do alinhamento, por exemplo, uma subassembly de meiofio é assim:


Veja que os vértices são numerados de P1 a P10 e as arestas são numeradas de L1 a L10, já as áreas delimitadas pelas arestas são numeradas de S1 a S2 e cada um destes códigos tem significados:
Point/LinkCodeDescription
P1FlangeFlange point of the gutter
P2Flowline_GutterGutter flowline point
P3TopCurbTop-of-curb
P4BackCurbBack-of-curb
L1 – L3Top, CurbFinish grade on the curb and gutter
L7Subbase, Datum&nbsp
S1CurbCurb-and-gutter concrete area
S2Subbase

Este códigos você encontra para cada subassembly no help. Basicamente o códigos "P" que estão nos vértices formarão as linhas longitudinais ao alinhamento, são as "feature lines". Os códigos "L" são os links entre os códigos "P" e formam as linhas transversais ao alinhamento, são os "Links" e a área formada pelos "links", são as "Shapes" ou hachuras que você vê quando cria uma assembly:



Veja que o pavimento, o meiofio, a base e a subbase tem hachuras diferentes. Elas são as "Shapes" e como tal tem estilos diferentes, Já os "Points" eu preferi mostrar todos iguais, são aqueles círculos com um "X" no que aparecem nos vértices.

Bom, mas como isso afeta o corridor?

O corridor é formado por assemblies que são formadas por subassemblies que tem códigos nos vertices, linhas e áreas, logo o corridor também terá estes códigos, certo?

Muito bem, Desenhe uma Seção tipo, ou pegue este dwg.

Abra o ToolsSpace (comando ShowTS), vá na aba "Settings", e encontre o Code Set Styles:


Clique editar (clique o botão direito do mouse sobre o nome do estilo).
Deverá abrir esta tela:


Interesante não? Clique aquele botão "Import Codes" que aparece aí na tela e selecione sua seção tipo... Veja que os nós Link, Point e Shape são preecnhidos com valores, na imagem acima deixei o nó das Shapes aberto. Experimete clicar naquele ícone vermelho e azul no canto da caixa do nome do estilo na coluna Style. vai aparecer uma telinha escrito "Pick Shape Style" no título... Familiar esta telinha não? Clique editar e veja:


Perceba que a Shape tem o contorno (Shape border line) e o preenchimento (shape area fill) e logo abaixo, podemos alterar o tipo da hachura. Experimente colocar outros tipos!!! Clique os OK que forem necessários e veja o desenho da seção tipo. Pode ser que a escala da hachura esteja muito denso, neste caso aparecerá uma mensagem na linha de comando informando isso.

Já para as os "Links" o estilo fica na coluna "Style" e basicamente se resume em definir a cor, tipo e espessura da linha, aqui está o truque para desligar as linhas perpendiculares (as frequencias das assemblies) no corridor. Criando dois Code Sets, podemos usar um nos corridors onde todos os links estão em estilos desligados, e usar uma nas assemblies que tenha os estilos ligados.

O mesmo pode ser dito para os "Points", só que o estilo será definido na coluna "Feature Line Style".

A linha longitudinal da calçada é uma feature line, a linha do "Daylight" também é. Note que os subassembly de "Daylight" pode desenhar "Feature Lines" diferentes para Corte e Aterro e se colocarrmos em estilos diferentes podemos diferenciar eles na planta:



Em verde, é a "feature line" do "daylight fill" e vermelho é a "feature line" do "daylight cut".

A convenção de talude é adicionada nas propriedades do corridor na aba "Slope Patterns" e você de usar as "feature line" do tipo "Daylight" e "Hinge" das subassemblies "daylight", lembra?

Muito bem, então agora crie 2 Code Sets, um onde os estilos dos links esteja desligado para usar nos Corridors e um com os links ligados para usar nas Assemblies:



Agora, veja as propriedades do seu corridor (comando EditCorridorProperties)
Vá na aba Codes:



Na caixa "Code Set Style" marque o correspondente aos Corridors.
Vá na aba "Parameters", clique o botão indicado na figura abaixo, em seguida no botão "Apply":


Agora clica no botão indicado e clica "Aplly" novamente.


Esta operação é necessária para forçar o corridor a usar o novo "Code Set"

Veja seu corridor, deverá ter as frequencias desligadas!!!

Agora, ligue o Properties, selecione a Assemblu que você usou para desenhar este corridor, e troque o Code Set dela:

Sua Assembly deverá mudar sua aparência....

É isso... susse né?

Civil 3d 2010 - mais do mesmo, ou menos...

Finalmente está disponível o "trial" do c3d 2010 no site da Autodesk... Apenas 4GB + 330MB de download hehehe

No momneto estou experimentando o bicho

Não vou falar das maravilhas do dito cujo para fazer interseções de corridor, nem daqueles menus que se parecem com os do Office 2007, isso já tem um monte de sites falando...

O que eu queria entender é: o que os programadores da Autodesk tem na cabeça?
Pô, numa versão a API te permite fazer uma coisa, noutra... não!!! No help diz:

The .NET API does not expose all the functionality of AutoCAD Civil 3D, and it exposes less than the COM API. The following areas are not yet exposed in .NET:

Survey
Points
Surfaces
Sites and Parcels
Sections
Data Bands
Labels
In addition, there are some areas in implemented functionality that are not yet complete:

Pipes: interference checks (except interference check styles)
Corridors:
creating new corridors
adding baselines to corridors
creating or modifying corridor boundaries or masks
creating featurelines from polylines
computing cut and fill
setting the CodeSetStyle
If you require this functionality in your .NET project, you can use the corresponding COM objects.


Então tá... quando soube que o c3d teria API .NET pensei: que legal!!!

Que legal nada... a API COM (activex, usada pelo vba) já é bem "castrada" e a API .NET implementa menos coisas que a API COM?????????

Que que é isso Bial!!!

Isso me cheira a boicote...

Sabe por que o civil 3d 2010 tem um construtor de interseção e os anteriores não?
Porque a maravilhosa API do c3d NÃO PERMITE criar mais de uma "Region" numa "Baseline" de um Corridor, nem tão pouco definir os targets das subassemmblies, ou até mesmo definir estaca inicial e final da ÚNICA Region que ela permite fazer...

Se isso fosse possível, teria "pipocado" na internet soluções para isso... Eu mesmo TENTEI bolar algo para isso, mas sem poder definir os targets não me animei em terminar... e precisava ver a GAMBIARRA que tinha de fazer para definir estacas de início e fim das Regions....

Ah, sim, tem um tal de "Corridor-EZY" que faz a dita interseção... mas é um software proprietário e tal... em fim, experimente-o.

E as Labels??? Sabia que a API te permite CRIAR um estilo de label? Legal né? Só tem um problema: não tem um método para ADICIONAR a label ao objeto correspondente!!! [inserir gargalhada aqui]

Algumas lables que fazem falta pra mim:

  • cota do degrau (diferença entre a cota da geratriz inferior do tubo e a cota de fundo da estrutura de jusante)de uma tubulação.

  • Cotas do perfil de greide no alinhamento, como as do estaqueamento

  • Label que indique a superelevação no alinhamento



Claro que isso se mais um "feature" nas próximas versões

Ah, claro, se você escreve programas para o c3d, se prepare para corrigí-los...
Alguns não funcionarão, pois os métodos podem ter mudado.... Algumas propriedades passaram a ser "Read-Only"....

Sem contar que só tem c3d 32 bits [mais gargalhadas]

[gargalhadas]
Comentários, por favor....

Terceira enquete


Hum.... quer dizer que a maioria até usa, mas não se empenha a fazer um programinha para o autocad??? Diria para vocês o seguinte: estão perdendo produtividade!!!

Outro dia uma estagiária aqui gastou 2 dias para listar os nomes de uns 300 arquivos dwg no excel... como ela fez? F2, CTRL+C, CTRL+V.... deu para imaginar né?

Claro que ela não precisava saber programar em lisp pra fazer isso, mas podia ao menos procurar no oráculo algo pra ajudar... ou perguntar para alguem do escritório se não tinha uma forma mais fácil...

por exemplo, se no prompt de comando, no diretório onde estavam os arquivos ela fizesse isso:
dir *.dwg /b > lista.txt
teria uma lista num arquivo de texto... em 10 segundos ela resolveria um problema de 2 dias!!!!
Mas não... ela não fez isso... ela gastou os dois dias... ainda bem que não sou eu quem paga as horas dela...

Civil 3d - tutoriais - parte 13 - DATASHORTCUT - a XREF do c3d


Use DATASHORTCUTs. Não sabe o que é isso? putz.. bom assunto pra fazer um tutô, né? Bom, basicamente é como XREF, mas com entidades do civil 3d, tais como alinhamentos, greides, superfícies....



Imagine o seguinte: você tem um levantamento topográfico gigantesco, com 50 mil pontos... e precisa lançar nele um loteamento, com umas 100 ruas por exemplo e você dispõe de uns 5 desenhistas pra fazer isso... Bom, todos acessarem o mesmo desenho ao mesmo tempo não dá, cada um fazer uma cópia e sair desenhando não é lá uma boa solução... e se o topógrafo tiver de fazer alguma complementação? Como atualizar o MDT (Modelo Digital do Terreno, ou surface se preferir) de cada um dos desenhistas??



Então, passa a ser interessante que este MDT esteja num arquivo único, separado dos arquivos dos desenhistas, onde apenas o topógrafo mexa, certo?



Cada alteração que ele fizer, os desenhistas são notificados pelo próprio c3d, bastando sincronizar o desenho.



Mas como isso funciona?

Faça o MDT. Salve este arquivo e em seguida use o comando AECCSHOWSHORTCUTS:





Esta tela é do C3d 2008, no 2009 é um pouco diferente, aliás, é até mais inteligente o tratamento que que deram a esta função... deposi vemos como se faz nele.



Com isso, se abre esta tela:





Ela mostra os Shortcuts criados e dá os comando para criar outros...

Então para criar um shortcut, clique o botão destacado:







Será pedido que você selecione alguma coisa.... Selecione a superfície do terreno.

Pronto, veja que agora existe uma entrada no nó "Surfaces":







Bom, agora vamos usar este datashortcut em outro desenho, isto é, vamos adicionar uma referência da surface noutro desenho, como se adicionássemos o dwg que tem o terreno como uma "External Rerference" (XREF). Mas primeiro, precisams EXPORTAR as datashortcuts, para que possamos IMPORTAR no outro desenho:







Abra um novo desenho, use novamente o comando AECCSHOWSHORTCUTS:







E Clique o botão destacado:







Procure o arquivo de shortcuts que você salvou no passo anterior.

Agora, expanda o nó "Surfaces", clique com o botão direito do mouse sebre o nome da surface, e clique "Create reference":







Irá abrir aquela telinha de criar surfaces:





Note que no campo "Surface Reference" está indicado o nome o caminho do DWG que contém a superfície, de resto é idêntico ao comando "CREATESURFACE", você precisa dar um nome, ou aceitar o nome original, definir o estilo e pronto, sua superfície está criada.



Note ainda, que ao salvar este desenho seu arquivo será bem pequeno, mesmo que o desenho que realmente tem a superfície seja grande. Isso ocorre porque a superfície não está neste desenho e sim no arquivo original. O que tem aqui é uma refêrencia a ela. Assim, tudo o que você usou para montar este MDT, seja pontos, breaklines, curvas de nível existentes, etc, está lá no arquivo original.



Agora, todos os desenhistas pode repetir este ultimo passo, isto é, criar a referência ao MDT e trabalhar, cada um criando um conjunto de alinhamentos e a medida que eles vão criando, vão criando também os Datashortcuts dos seus alinhamentos e greides:







Em seguida, os estagiários podem importar as datashortcuts da superfície e dos alinhamentos e desenhar as "Sample Line Groups" e desenhar as "Sections Views" ("cortar" as seções transversais).



Tenho certeza que você notará uma produtividade muito grande, pois muitas pessoas poderão trabalhar no mesmo projeto, alem disso, você já deve ter notado que um desenho com muitos alinhamentos, muitas seções, etc, demora bem mais para abrir, para fazer "rebuilds" de corridor...



É como diria Jack, vamos por partes, hehehehe



Ainda falta falar do c3d 2009... Nele, a primeira coisa a fazer, é setar a pasta de projeto... Notou que no 2008 não foi preciso? Bem... no 2009 é...:





Vai pedir pra procurar uma pasta, escolha onde você salvou o MDT:





Em seguida, abra o Toolspace (comando ShowTS), deixe o "Master View" ( lá no topo )aparecendo e clique:





O 2009 salva cada datashortcut num arquivo XML separado, coisa que o 2008 não faz e ele os gerencia sozinho, coisa que o 2008 também não faz... Em resumo é bem mais prático...



Em fim, ao aparecer esta tela, apenas dê o nome da pasta no campo "Name" e clique OK:





E para criar os datashortcut, clique com o botão direito do mouse sobre o nó Datashortcut, como na figura:





Vai abrir esta tela:





Veja que você pode criar os Datashortcuts apenas marcando as caixinhas, ou pode escolher os elementos na tela ao clicar o botão "Pick in Drawing". Isso não te obriga a ter os elementos desenhados na tela, isto é, com os estilos ligados, como no 2008....



Agora é só ir no novo desenho e com o Toolspace aberto, mostrando o "Master View", expanda o nó "Datashortcuts", expanda o nó "Surfaces", clique com o botão direito do mouse sobre a superfície e clique "Create Reference":







Percebe que é mais intuitivo no 2009?



Bom, quando você for fazer um novo projeto, lembre-se de setar a "Working Folder" senão você verá as Datashortcuts dos projetos antigos....



É isso....