×
INTELLIGENT WORK FORUMS
FOR ENGINEERING PROFESSIONALS

Log In

Come Join Us!

Are you an
Engineering professional?
Join Eng-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!
  • Students Click Here

*Eng-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Jobs

Remove a color using "No Color"

Remove a color using "No Color"

Remove a color using "No Color"

(OP)
thread560-129853: Programmatically change the color of a part?
Catia V5 R18 on XP, VBA

Hello,
I am working in the context of a CATProduct which does contain many levels of "assemblies" (components). Those components have different attribute such as the assembly type and the status (Shared SH, Release RL and Frozen FR in my case). I order to help designer to filter their catproduct on the attributes for DMU purpose I created an user form which allow the designer to color all assemblies at the FR status or all assemblies RL status.... so once the designer has selected what he wants the data is colored, the color is applied on the assembly level which color the parts by inheritance. So the color of of the assembly is changed from "No Color" to a RVB color (SelectionX.SetVisibleColor()). Now if I want the designer to be able to proceed again and color another selection I need to be able to remove the colors I just applied. That is for the context of what I am trying to do.
The question:
What is the VB code to apply a "No Color" value on an part which has been selected? (properties-> graphic-> graphic properties-> color-> "No Color).

I hope I was clear in the description of my issue (I know how to do the selection just I do not know how to remove the color I just applied on an assembly without closing the catprodut).

Any help would be appreciated.
Thank you
Regards
Alexandre Bessy

RE: Remove a color using "No Color"

(OP)
No clues?
sad

RE: Remove a color using "No Color"

I have looked at this in Knowledgeware to set a hole back to NONE but could only set to the default colour hex code of "#D2D2FF"  There are some things you can not access in the API or language browsers.

Regards,
Derek


 

Win XP64
R20/21, 3DVIA Composer 2012, ST R20
Dell T7400 16GB Ram
Quadro FX 4800 - 1.5GB

RE: Remove a color using "No Color"

(OP)
I afraid of something like that but I really appreciate you taking the time to look into it.

Thank you
Regards
Alexandre Bessy
 

RE: Remove a color using "No Color"

Hi

All these are old codes , I didn't tested on newer versions of CATIA. Hope I understood well your problem and maybe this can help you a little bit in your search.
In a CATScript, code to reset graphic properties (to default, of course):

CODE

Sub CATMain()
Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument
Dim part1 As part
Set part1 = partDocument1.part
Dim bodies1 As Bodies
Set bodies1 = part1.Bodies
Dim body1 As Body
Set body1 = bodies1.Item(1)
Dim specsAndGeomWindow1 As SpecsAndGeomWindow
Set specsAndGeomWindow1 = CATIA.ActiveWindow
Dim viewer3D1 As Viewer3D
Set viewer3D1 = specsAndGeomWindow1.ActiveViewer
viewer3D1.Reframe
Dim viewpoint3D1 As Viewpoint3D
Set viewpoint3D1 = viewer3D1.Viewpoint3D
Set viewpoint3D1 = viewer3D1.Viewpoint3D
CATIA.StartCommand "* Iso"
Dim selection1 As Selection
Set selection1 = partDocument1.Selection
selection1.Add body1
CATIA.StartCommand "Reset Properties"
selection1.Clear
Dim cmd As String
cmd = "wscript c:\SendEnter.vbs"
End Sub

Code for vbs file

CODE

Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.sleep 200
WshShell.SendKeys "{ENTER}"

Of course you can do it in vba, it will be much easier.

Or you can use something else (also in CATScript) smile :

CODE

' Purpose:         Change color of the selected elements

Option Explicit
Sub CATMain()

    Dim TabSelectedProduct() As Product
    Dim oProductRoot As Product
    Dim oProduct As Product
    Dim iNumberSel As Integer
    Dim iIndexSel As Integer
    Dim iNumberBodies As Integer
    Dim iNumberShapes As Integer
    Dim sInputObjectType(0) As String
    Dim oObject As AnyObject
    Dim r As long, g As long, b As Long
    Dim layer As long
    Dim layertype As CatVisLayerType     
    Dim oVisProperties1 As VisPropertySet
    Dim oDocument As Document
    Dim oSelection As Selection    
    Dim Status As String
    Dim index As Integer
    Dim iErr As Integer
    Dim MechPart As Part
    Dim j As Integer
    Dim body As Body
    Dim oShapes As Shapes
    Dim oShape As Shape
    Dim k As Integer

    ' Retrieve the current selection
    Set oDocument = CATIA.ActiveDocument
    Set oSelection = oDocument.Selection
     
    ' The work mode must be the design mode
    Set oProductRoot = CATIA.ActiveDocument.Product
    oProductRoot.applyWorkMode(DESIGN_MODE)

    CATIA.RefreshDisplay = True

    ' ------------------------------------------------------
    ' read the products to be colored

Msgbox "Select a product to be colored"

    sInputObjectType(0) = "Product"
    Status = oSelection.SelectElement2(sInputObjectType,"Select a product to be colored",True)
    If (Status = "Cancel") Then Exit Sub

    ' Fill a table with products selected
    iNumberSel = oSelection.Count
    If (iNumberSel = 0) then
        MsgBox "You must select 1 to N Parts to be colored.", vbCritical, "Selection"
    End If

    Redim TabSelectedProduct(oSelection.Count - 1)
   
    iIndexSel=0
    On Error Resume Next
    While (Err.Number = 0)
       Set oProduct = oSelection.FindObject("CATIAProduct")
       If (Err.Number = 0) Then
            Set TabSelectedProduct(iIndexSel) = oProduct
            iIndexSel =  iIndexSel+1
       End If
    Wend
    On Error Goto 0
     
    oSelection.Clear
          
    ' -----------------------------------------------------
    ' read the reference
     ' The user set the new color
    
    Msgbox "Select a reference Body For Color"
    
     sInputObjectType(0) = "Body"
     Status = oSelection.SelectElement2(sInputObjectType,"Select a reference Body For Color",True)
     If (Status = "Cancel") Then Exit Sub
     
     r = CLng(0)
     g = CLng(0)
     b = CLng(0)

     Set oObject = oSelection.Item(1).Value
    Set oVisProperties1 = oSelection.VisProperties
     call oVisProperties1.GetVisibleColor (r, g, b)

     oSelection.Clear()

   ' -------------------------------------------------------
   ' Build the selection for new color

     'Loop on the table to put all the object on selection
     For Index = 1 to iNumberSel
         Set oProduct = TabSelectedProduct(Index - 1)
         
         On Error Resume next
             Set MechPart = oProduct.GetMasterShapeRepresentation(true).Part
             iErr = Err.Number
            On Error Goto 0 ' Invalidates the Resume next and clears the error

            If (iErr<>0) Then
                ' User must select part
                        MsgBox " The object " & oProduct.Name & " is not a Part.", vbCritical, "Selection"
            Else
                
                 iNumberBodies = MechPart.Bodies.Count
                  For j = 1 to iNumberBodies
                       Set Body = MechPart.Bodies.Item(j)
                      oSelection.Add(Body)
                      Set oShapes = Body.Shapes
                      iNumberShapes = oShapes.Count
                      For k = 1 to iNumberShapes
                          Set oShape = oShapes.Item(k)
                          oSelection.Add(oShape)    
                      Next
                 Next
             End If    
     
      Next
''--------------------------------------------
   ' change color
  
    Set oVisProperties1 = oSelection.VisProperties
    oVisProperties1.SetVisibleColor r,g,b,0

      oSelection.Clear
      oProductRoot.Update

End Sub

And finally, default CATIA color can be obtained also like this :

CODE

Language="VBSCRIPT"

Sub CATMain()

Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = productDocument1.Selection

selection1.Search "CATPrtSearch.MechanicalFeature,all"

Set visPropertySet1 = selection1.VisProperties
visPropertySet1.SetRealColor 210,210,255,1

Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties
visProperties1.SetRealOpacity 255,1

selection1.Clear

selection1.Search "CATAsmSearch.Part,all"

Set visPropertySet1 = selection1.VisProperties
visPropertySet1.SetRealColor 210,210,255,1

Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties
visProperties1.SetRealOpacity 255,1

selection1.Clear

Dim specsAndGeomWindow1 As Window
Set specsAndGeomWindow1 = CATIA.ActiveWindow

Dim viewer3D1 As Viewer
Set viewer3D1 = specsAndGeomWindow1.ActiveViewer

viewer3D1.Reframe

Dim viewpoint3D1 As Viewpoint3D
Set viewpoint3D1 = viewer3D1.Viewpoint3D

End Sub



 

Regards
Fernando
 

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Eng-Tips Forums free from inappropriate posts.
The Eng-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Eng-Tips forums is a member-only feature.

Click Here to join Eng-Tips and talk with other members!


Resources