Saltar al contenido

Comentar Imagen

Foto

¿Cómo elimino todas las posiciones de un array?


  • Please log in to reply
3 Respuesta(s) a este Tema

#1
Nava

Nava

    Principiante en AuxCAD

  • Miembros
  • 3 Mensajes
  • Auxis: 3
    • Pais: Country Flag

    Hola buenas!

     

    Estoy trabajando en una macro para eliminar todas las user properties que tienen los parts incluídas en un product.

     

    El problema viene cuando al querer acceder de forma recursiva a Params donde tengo las propiedades no consigo borrarlas todas.

    
    Dim i As Integer
    Dim InputObj(99) As Variant
    Dim j As Integer
    Dim k As Integer
    Dim ww As Integer
    Dim Params As Variant
    Dim zz As Integer
        
       For i = 1 To iCount
    
       Set InputObj(i) = ObjSel.Item2(i).Value
       Set Params = InputObj(i).ReferenceProduct.UserRefProperties
            For k = 1 To 99
            Params.Remove k
            Next
       Next
    
    MsgBox (" Todos los Parts cambiados!!!")
    
    End Sub
    

    ¡Espero que me podaís echa una manilla!, Si queda algo mal explicado preguntame

     

    Gracias!


    • 0

    #2
    ferdo

    ferdo

      Experto en AuxCAD

    • Miembros
    • 215 Mensajes
  • Auxis: 104
    • Pais: Country Flag

    Hola,

     

    CATScript...

     Sub CATMain()
    
    Dim oTopProduct ''As Product
    Dim MainDocument ''As ProductDocument
    Set MainDocument = CATIA.ActiveDocument
    Set oTopProduct = MainDocument.Product
    Set selection1 = oTopProduct.Parent.Selection
    NumberOfItems = oTopProduct.Products.Count
    
    selection1.Clear
        For k = 1 to NumberOfItems
        
            set oSelectedProduct = oTopProduct.Products.Item(k)
            selection1.Add oSelectedProduct
            Dim oParams As Parameters
            Set oParams = oSelectedProduct.ReferenceProduct.UserRefProperties
            
              For i = 1 To (oParams.Count)
                  oParams.Remove (oParams.Count)
              Next
    
        Next
    
    selection1.Clear
    
    End Sub
    

    • 3
    Un saludo cordial
    Fernando

    sites visited in RO
    sites visited in EU

    #3
    Nava

    Nava

      Principiante en AuxCAD

    • Miembros
    • 3 Mensajes
  • Auxis: 3
    • Pais: Country Flag

    Hola buenas de nuevo!!

     

    Gracias Ferdo por el aporte, me pongo a trabajar con ello.

     

    Cuando de con algo lo posteare por aqui.

     

    Muchas gracias!!!!!


    • 1

    #4
    Nava

    Nava

      Principiante en AuxCAD

    • Miembros
    • 3 Mensajes
  • Auxis: 3
    • Pais: Country Flag

    Hola buenas!,

     

    después de dale un poco al coco he conseguido sacar algo... os lo pongo por aquí, que así igual podemos mejorarlo un poco.

     

    Lo que hace esta macro es que  tras seleccionar unos parts que tu desees, elimine las user properties que existan en los parts.

     

     Y eso... cualquier sugerencia, fallo o mejora que se os ocurra o encontréis... ¡ os agradecería que la compartamos!.

     

    Muchas a gracias a todos porque los anteriores posts me han ayudado a comprender un poco como funciona esto de las macros.

     

    Un saludo

    Sub CATMain()
    
    ' Initiate the macro on the active document
    '-----------------------------------------------
    
    Dim ObjSel As Object
    Set ObjSel = CATIA.ActiveDocument.Selection
    ObjSel.Clear
    
    
    ' Initiate the selection of the parts
    '-----------------------------------------------
    
    Dim SelElm As Variant
    Dim What(1)
    What(0) = "Part"
    What(1) = "Product"
    
    MsgBox ("Selecciona los parts en los que eliminar las propiedades")
    SelElm = ObjSel.SelectElement3(What, "Select a Part or Product", False, CATMultiSelTriggWhenUserValidatesSelection, False)
       
    
    If SelElm = "Normal" Then
          
       Else
            MsgBox ("Selection Aborted")
       End If
       
    ' Initiate the loop to erase the properties
    '-----------------------------------------------
    
    Dim iCount As Integer
    iCount = ObjSel.Count
    
    Dim InputObjt(99) As Variant
    Dim Params As Variant
    
    Dim h As Integer
    
    For i = 1 To iCount
        
            Set InputObjt(i) = ObjSel.Item2(i).Value
                
            Set Params = InputObjt(i).ReferenceProduct.UserRefProperties
            
              For h = 1 To (Params.Count)
                  Params.Remove (Params.Count)
              Next
    
    
    Next
    
    ObjSel.Clear
    
    MsgBox (" Todos las properties ELIMINADAS!!!")
    End Sub
    
    

    • 2




    0 Usuario(s) están leyendo este Tema

    0 miembro(s), 0 invitado(s), 0 usuario(s) anónimo(s)