Saltar al contenido

Comentar Imagen

Foto

indice en CatParts


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

#1
xyon126

xyon126

    Experto en AuxCAD

  • Miembros
  • 156 Mensajes
  • Auxis: 13
    • Pais: Country Flag
    Hola compañeros!

    Estoy con una macro para poder poner al final del nombre del CatPart (PartNumber) una coletilla o indice (.0001, .0002, ...... .9999) el caso es que lo he conseguido a medias pero cuando en un product encuentra una CATPart repetida me la toma como una nueva con lo que me inserta el indice otra vez con esta respuesta ejemplo :

    Product.

    CATPART_01.0001.0004.0005.1
    CATPART_02.0002.1
    CATPART_03.0003.1
    CATPART_01.0001.0004.0005.2
    CATPART_01.0001.0004.0005.3

    Cuando lo que realmente necesito es esto :


    Product.

    CATPART_01.0001.1
    CATPART_02.0002.1
    CATPART_03.0003.1
    CATPART_01.0001.2
    CATPART_01.0001.3

    Podeis echarme una mano i decirme donde esta el error.

    Sub CATMain()
    	Dim tmpDoc As ProductDocument
    	Dim ChildDoc 'As Document
    	Dim index  As Integer
    	Dim numero As String
    	Dim i As Integer
      
    	Set tmpDoc = CATIA.ActiveDocument
    	index = 1
    	numero = ".000"
    	If InStr(1, tmpDoc.Name, ".CATProduct") Then
      
    		For i = 1 To tmpDoc.Product.Products.Count
    	  
    			Set ChildDoc = tmpDoc.Product.Products.Item(i)
    	
    			If index >= 1000 Then
    				numero = "."
    			ElseIf index >= 100 Then
    				numero = ".0"
    			ElseIf index >= 10 Then
    				numero = ".00"
    			End If
    		  
    			Textdata = numero & index
    			ChildDoc.PartNumber = ChildDoc.PartNumber & Textdata
    			index = index + 1
    
    		Next
    	  
    	End If
      
    	tmpDoc.Product.Update
    
    

    Muchas gracias

    Un saludo
    • 0

    #2
    Alpharsp

    Alpharsp

      Principiante en AuxCAD

    • Miembros
    • 6 Mensajes
  • Auxis: 1
    • Pais: Country Flag
    Que onda xyon, revisando tu codigo me parece que esta perfectamente bien, realmente no lo he corrido pero creo saber cual es tu problema.

    voy a referirme a las parte que has puesto como instancias 1,2,3,4 y 5 donde las instancias 1,4 y 5 comparten la misma parte, corrigeme si me equivoco.

    Al cambiarle el numero de parte a una instancia, esta afecta a todas las demas instancias que comparten esta parte, es decir al renombrar la 1 renombraste la 4 y la 5 asi como al renombrar la 4 se modificaron la 1 y5 y al renombrar la 5 cambiaron la 1 y 4.

    ----------------------------------------------------
    Esto es lo que obtendrias en las 5 iteraciones de tu ciclo for:

    Inicio
    CATPART_01
    CATPART_02
    CATPART_03
    CATPART_04
    CATPART_05

    Iteracion 1:

    CATPART_01.0001
    CATPART_02
    CATPART_03
    CATPART_04.0001
    CATPART_05.0001


    Iteracion 2:
    CATPART_01.0001
    CATPART_02.0002
    CATPART_03
    CATPART_04.0001
    CATPART_05.0001


    Iteracion 3:
    CATPART_01.0001
    CATPART_02.0002
    CATPART_03.0003
    CATPART_04.0001
    CATPART_05.0001


    Iteracion 4:
    CATPART_01.0001.0004
    CATPART_02.0002
    CATPART_03.0003
    CATPART_04.0001.0004
    CATPART_05.0001.0004


    Iteracion 5:
    CATPART_01.0001.0004.0005
    CATPART_02.0002
    CATPART_03.0003
    CATPART_04.0001.0004.0005
    CATPART_05.0001.0004.0005

    como tu renombre le afecto 3 veces al mismo numero de parte, se reescribio sobre el mismo nombre

    para evitar esto tendrias bien que tener numeros de parte diferentes, o bien renombrar las instancias en lugar de las partes
    • 0

    #3
    Alpharsp

    Alpharsp

      Principiante en AuxCAD

    • Miembros
    • 6 Mensajes
  • Auxis: 1
    • Pais: Country Flag
    Disculpa, arriba donde escribi:

    CATPART_04
    CATPART_05

    en realidad es


    CATPART_01
    CATPART_01
    • 0

    #4
    xyon126

    xyon126

      Experto en AuxCAD

    • Miembros
    • 156 Mensajes
  • Auxis: 13
    • Pais: Country Flag
    Hola Alpharsp!

    Cierto lo que tu dices ese es mi problema y mi codigo inicial lo que hacia era eso, en vez de nombrar el PartNumber me nombraba la Instancename pero el problema viene despues, y es que por un lado tengo una macro que me renombra el PartNumber = Filename y otra que renombra el Instancename=PartNumber pero no tengo ninguna que me nombre el PartNumber=Instancename y he probado mi codigo de la Instancename=PartNumber invirtiendolo y nastis que plastis, despues de peleas infinitas voy a parar a que lo logico seria lo de la macro actual pero solucionando ese proplemilla. Tengo en mente hacerlo con un array pero no tengo ni idea de como hacerlo.

    Un saludo
    • 0

    #5
    Alpharsp

    Alpharsp

      Principiante en AuxCAD

    • Miembros
    • 6 Mensajes
  • Auxis: 1
    • Pais: Country Flag
    Esque para que funcione y realmente le puedas dar nombres distintos al mismo partnumber, haciendo referencia a tu codigo actual, tendrias que tener guardados los 3 partnumbers iguales con nombres diferentes en tu folder.

    Es decir que los 3 part numbers iguales ya no sean iguales
    fisicamente lo seran pero al tener nombres de parte diferente guardados en .CATPart diferente catia pensara que se trata de distintas partes aun cuando este sea el mismo
    • 0

    #6
    xyon126

    xyon126

      Experto en AuxCAD

    • Miembros
    • 156 Mensajes
  • Auxis: 13
    • Pais: Country Flag
    Hola Alpharsp!

    Veo que has pillado la onda de mi Macro y que ves el posible problema aunque este problema ya lo tengo en cuenta, para poder solucionarlo lo que he de hacer es que la macro solo renombre el indice de las CATParts en su PartNumber internamente en el CATProduct sin tener que updatear y grabar posteriormente ya que para este menester tengo una macro que me graba todo el CatProduct en el directorio que le indique con el nombre de su PartNumber actual y no el original del Filename por eso creo que la solución esta en hacer una coleccion o matriz interna de todos los CatParts y una vez aqui renombrarlas, mi problema es que no se como oñ. . . . hacer esta matriz o colección para que me coja si hay 4 CatParts iguales solo la primera y asi sucesivamente, esta macro la he invertido con los Instancename y me la hace de coña pero la put. . . .da es que es con Instance name. Haber si me echais una manita.

    Un saludote
    • 0




    0 Usuario(s) están leyendo este Tema

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