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..