Extender Sample Lines

Sabe aquelas horas que voce precisa "extender" uma sample line até algum lugar, para que a seção mostre tudo o que voce quer?

Já reparou como pode ficar lento estrechar uma a uma na mão?

É... Eu também reparei... Bom, vamos tentar agilizar isso com o programinha abaixo:

(defun C:EXTENDSECTION (/ e1 e2 ss pt p2 d dmax align
            sta offset vertex v fun
)
  (
tbn:error-init nil)
  (
prompt "\nSelecione a polilinha até onde extender")
  (
setq e1 (vlax-ename->vla-object
         (ssname (ssget ":S" '((0 . "LWPOLYLINE")))
             0)))
  (
prompt "\nSelecione as sample lines")
  (
setq    ss (ssget '((0 . "AECC_SAMPLE_LINE"))))
  (
repeat (sslength ss)
    (
setq e2    (vlax-ename->vla-object (ssname ss 0))
      align (vlax-get-property
          (vlax-get-property e2 "Parent")
          "Parent")
      pt    (vlax-safearray->list
              (vlax-variant-value
               (vla-IntersectWith
            e1
            e2

            acExtendOtherEntity)))
      pt    (list (car pt) (cadr pt) 0.0)
      dmax 0)
    (
vlax-invoke-method align
      "StationOffset" (car pt) (cadr pt) 'sta 'offset)
    (
setq fun (if (> offset 0) > <)
      vertex nil)
     
   
    (
vlax-for v (vlax-get-property e2 "vertices")
      (
setq off (vlax-get-property v "stationoffset"))
      (
if (fun off dmax) (setq vertex v dmax off)))
     
    (
if vertex
      (vlax-put-property vertex "location"
    (vlax-3d-point pt)))
   
    (
ssdel (ssname ss 0) ss)
    )
  (
tbn:error-restore))


 

Link(s) da(s) subrotina(s) usada(s):
tbn:error-init, tbn:error-restore


Pra usar é simples:

Tenha um alinhamento com sample lines (é claro)
desenhe uma polilinha que servirá como referencia para esticar as sample lines

chame o comando ( após carregar a lisp, certo? ) EXTENDSECTION

ele irá pedir para selecionar essa polilinha, depois as seções.

Pronto.

Se você testou e gostou, deixe um comentário!!!
Se não gostou, deixe mesmo assim

Se você não sabe o que é a sample line, bem... leia os tutoriais de seções, hehehe

Civil 3d e erros com Windows 7

Se você está usando o windows Vista, Seven, ou Xp sp3, talvez tenha problemas com alguns comando que precisam acessar o disco, por exemplo, no tutorial 1.1, onde eu ensino a definir um referencial. pode ser que ele diga que não é possível criar alguma coisa, como por exemplo o "Categories". Isso acontece porque o windows BLOQUEIA as operações de ESCRITA de todas as pastas do drive onde o windows está instalado (C:/)!!!

E o comando para criar o novo referencial (comando ADEDEFCRDSYS), precisa escrever no disco os dados do novo referencial e sem permissão de escrita isso fica inviável...

Logo você deve obter permissão de Escrita nas pastas... ( no caso "C:\ProgramData\Autodesk", para o windows 7)

Civil 3d 2011 64 bits!!!

Aleluia, até que em fim!!!!

Agora o bixo é 64 bits, hehehehhe

Mas será que muda alguma coisa??
Bem... Nos poucos testes que fiz até agora, não... Até porque o programa é fortemente dependente da placa de video, então....

Mas o editor de superelevação, ah, esse sim, merece os parabéns!!!
Chega daquela coisa de editar uma tabela enorme nas propriedades do alinhamento, agora a coisa é visual, num gráfico:


Mas ainda tem um problema, achar o comando que faz o "Superelevation View" está bem escondido, hehehhe eu mesmo nao achei e tive de recorrer ao help do programa para saber o nome do comando e digitar ele na linha de comando... Bem, nada que uma treinada não resolva....

Algumas coisas estranhas que achei: F2 ( text screen ), acionei ele sem querer e não podia mais fechar ele pela barra de ferramentas do windows 7... vai saber...

Ainda sinto falta de algumas propriedades nas labels das PipeNetworks, como o Degrau na chegada do tubo na estrutura (claro que a minha solução no C3DRENESG para isso resolve, hehehe, ah, em breve versão pra o 2011)

Ah sim, as interseções:

Isso com certeza é bem vindo, hehehhe, já deve ter dúzias de posts na internet falando delas....

Mas nem tudo são flores, algumas travadas inexplicáveis ainda ocorrem, e a API .NET reservou algumas pegadinhas, por exemplo, nas pipenetwork, se eu quiser obter o valor do diâmetro do tubo, faria:

Dim dn as Double = tubo.PartData.GetDataFieldBy("PID").Value

Simples né? mas e as unidades de medida??? No 2010, o valor devolvido vai vir conforme o que estiver configurado no Toolspace/Settings/Drawing Settings/Units And Zone (API: CivilApplication.ActiveDocument.Settings.DrawingSettings.UnitZoneSettings.DrawingUnits) já no 2011 vem o valor numérico que está armazenado neste atributo... Aí você precisa obter o o valor do atributo Units:

Dim u as String = tubo.PartData.GetDataFieldBy("PID").Units

e fazer as devidas conversões...

Então, a propriedade mudou... na API COM, continua como era antes, isto é, devolve o valor numérico armazenado....

API para manipular LABELS? grande piada!!!! praticamente nenhuma!!!

e algumas nem funcionam!!!

a API NET não consegue atribuir uma label style numa label de uma estrutura!!! isso é inadmissivel, hehehehe

Novidade também é o Point Clouds que aparece no Toolspace... Vou achar uma utilidade pra eles ainda... por enquanto vou usar os pontos como fazia no 2010...

Desta vez, o VBA não teve chance:

Não que eu vá reclamar, hehehehe o VBA até que é legal pra fazer uns forms mais bonitos e sofisticados que em lisp, mas fora isso, ele não consegue criar comandos, como o lisp!!! então, se é pra depender do lisp pra isso, muito obrigado, prefiro o lisp.

Então se você tinha programinhas muito legais em VBA, lascou-se, ou você baixa o VBA ai da figura, ou porta o seu código pra VB.NET e usa o VB.NET Express Edition. O que eu recomendo fortemente!!!

E não é dificil, veja este post

Bom, se você quer experimentar o 2011, TALVEZ o trial já esteja disponível pra download no site da autodesk, se não estiver, dê uma olhada nos sites de torrent (AUTODESK.AUTOCAD.CIVIL3D.WIN64-ISO.torrent você não viu esta informação aqui)

No mais, se você tem uma placa de video que custa abaixo de 1000 reais, nem adianta reclamar do desempenho... mesmo tendo 6GB de RAM, num quadcore da vida....