Civil 3d – Pontos

Hoje pra mudar um pouco, vou postar alguma coisa do civil 3d… alguem (assim como eu) já deve ter tentado programar qualquer coisa para ele e, a princípio, fez em VBA, usando os exemplos do próprio programa… mas e em Visual Lisp? será que dá? sim!!! dá!! e nem é tão complicado… que já “conectou” o autocad com o access/excel não vai ter dificuldade nenhuma…

bom, da forma que eu fiz, primeiro defino algumas variáveis globais (que serão usadas em várias subrotinas):


(setq acadapp (vlax-get-acad-object)
aec-app (vla-GetInterfaceObject acadapp “AeccXUiLand.AeccApplication”)
aec-adoc (vla-get-activedocument aec-app)
aec-db (vla-get-database aec-adoc)
aec-pts (vlax-get-property aec-db “points”)
aec-surfs (vlax-get-property aec-db “surfaces”))


bom… não vou explicar o que cada função faz… leia o help do civil também, hehehe!!!
estas variáveis serão usadas, por exemplo, nesta rotina:


(defun aec-get-point-by-name (name / lst)
(
vl-catch-all-apply
vlax-map-collection
(list aec-pts (lambda (pt) (if (wcmatch (vlax-get-property pt “Name”) name) (setq lst (cons pt lst))))))
lst)


quem usa pontos de levantamento topográfico, sabe que as vezes o ponto vem com o nome duplicado, com caracteres alfanuméricos… mas o PointNumber só aceita número inteiro… nestes casos, em vez de usar a propriedade PointNumber, pode-se usar a PointName, assim o croquis do levantamento terá pontos com nomes coerentes com o desenho do cad… já que PointName aceita caracteres alfanuméricos… assim, se quisermos o(s) ponto(s) de nome “E1” por exemplo, basta usar: (aec-get-point-by-name “E1”) e, da maneira que a subrotina foi escrita, pode-se usar: (aec-get-point-by-name “E*”) e isto nos retornaria uma lista com os pontos cujo nome comecem com “E”… sacam?

logo posto uma rotina que usa esta subrotina..

Deixe um comentário

Rolar para cima