View Full Version : VBA - Verificação de Existencia - Autodesk Inventor
Cristiano Oliveira
2007-08-08, 11:38 AM
Necessito verificar a existencia de um campo criado no Custom do arquivo de Inventor.
Sabemos então:
If oPropertyset.Item(4).Item("Itemcriado") = Exist then
...
...
O que necessito saber é como posso verificar a exitencia deste campo. Sei q o comparativo Exist não funciona.
No caso eu quero verificar se o campo existe, caso não exista seja criado.
Alguém pode dar uma luz...
Rui Pestana
2007-08-09, 11:34 AM
Caro Cristiano,
envio-lhe um código pra fazer o que pretende e algumas explicações adicionais sobre criação de propriedades:
'Início de código
Option Explicit
Public Sub CheckIProperties()
Dim oDoc As PartDocument
Set oDoc = ThisApplication.ActiveDocument
' Obtain the PropertySets collection object
Dim oPropsets As Inventor.PropertySets
Set oPropsets = oDoc.PropertySets
'Pode procurar o conjunto de propriedades pelos nomes
Dim n As Integer
n = oPropsets.Count
Dim i As Integer
Dim oPropset As Inventor.PropertySet
For i = 1 To n
Debug.Print oPropsets.Item(i).DisplayName
Select Case oPropsets.Item(i).DisplayName
Case "Summary Information"
Case "Document Summary Information"
Case "Design Tracking Properties"
Case "User Defined Properties"
Set oPropset = oPropsets.Item(i)
Exit For
End Select
Next i
'Ou pode procurar pelos nomes internos, a saber:
'Summary Information, {F29F85E0-4FF9-1068-AB91-08002B27B3D9}
'Document Summary Information, {D5CDD502-2E9C-101B-9397-08002B2CF9AE}
'Design Tracking Properties, {32853F0F-3444-11D1-9E93-0060B03C1CA6}
'User Defined Properties, {D5CDD505-2E9C-101B-9397-08002B2CF9AE}
' no seu caso é:
Set oPropset = oPropsets.Item("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}")
'número de propriedades
n = oPropset.Count
' nome da propriedade a procurar
Dim strProcura As String
strProcura = "Itemcriado"
Dim oProp As Inventor.Property
Dim found As Boolean
' flag que serve para saber se a propriedade foi encontrada
found = False
' percorre o conjunto de propriedades
For i = 1 To n
'Debug.Print oPropset.Item(i).DisplayName & vbTab & oPropset.Item(i).PropId
' se o nome da propriedade for o que procura
If oPropset.Item(i).DisplayName = strProcura Then
'marca que foi encontrado
found = True
'a linha seguinte não é necessária para o que pretende mas
' poderá servir para alterar a propriedade
Set oProp = oPropset.Item(i)
Exit For
End If
Next i
' se a propriedade não foi encontrada
If Not found Then
' define-se o seu valor
Dim propValue As String
propValue = "qualquer coisa"
' define-se o seu nome
Dim propName As String
propName = "Itemcriado"
'cria-se a propriedade no conjunto que se pretendia
Set oProp = oPropset.Add(propValue, propName)
End If
'Anexo sobre criação de propriedades:
'Para criar propriedades em outros formatos que não o de texto deve-se
' passar o seu valor no formato que se pretende como no exemplo abaixo:
'para Tipo Yes or No passa-se um valor boleano
Dim ValorSimNao As Boolean
ValorSimNao = False
propName = "Sim ou não"
Set oProp = oPropset.Add(ValorSimNao, propName)
'para Tipo Number passa-se um valor de qualquer tipo numérico
' como nos dois exemplos seguintes:
Dim ValorInteiro As Integer
ValorInteiro = 15.1523986
propName = "NúmeroInteiro"
Set oProp = oPropset.Add(ValorInteiro, propName)
'ou
Dim ValorDuplaPrecisao As Double
ValorDuplaPrecisao = 15.1523986
propName = "NúmeroDuplaPrecisao"
Set oProp = oPropset.Add(ValorDuplaPrecisao, propName)
'finalmente para datas passa-se uma data para o valor da propriedade:
Dim ValorData As Date
ValorData = Date
propName = "Data actual"
Set oProp = oPropset.Add(ValorData, propName)
End Sub
'Fim de código
Espero que lhe seja útil e não hesite se tiver alguma dúvida ou necessitar de mais alguma explicação adicional.
Cristiano Oliveira
2007-08-09, 08:09 PM
Rui,
Agradeço o codigo...
Estarei testando na minha aplicação e qualquer coisa volto a questão.
Obrigado.
Powered by vBulletin® Version 4.1.11 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.